js Array 创建具有自定义初始值的数组

在原生js中,创建数组的常见方式有两种:Array() 或 new Array() 和 [] 方式.

构造函数创建数组和字面量定义数组的差异不谈,

当我们需要给创建数组赋初始值时,如果量少的话,可以直接通过

let arr = [2,4] 的方式创建;

而当量大而重复的时候,可以通过以下的方式创建:

Array.apply(null,{length:20}).map(()=>2)

//(20) [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]

等同于:

Array.apply(null,Array(20)).map(()=>2)
//(20) [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]

如果需要递增赋值的话:

Array.apply(null,{length:20}).map((v,i)=>i)
(20) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

以上的语法也可以写成:

Array(...Array(20)).map((v,i)=>i)
(20) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

可能有人会疑惑,为什么要Array(...Array(20))这么麻烦的来创建数组呢,直接Array(20)再通过map()来赋值不可以吗?

这是因为直接通过Array(20)的方式创建的数组,只有长度没有索引值,

Array(20)
(20) [empty × 20]

Array(20)[2]   //undefined

2 in Array(20)   //false

map ()方法会给原数组中的每个元素都按顺序调用一次  callback 函数。callback 每次执行后的返回值(包括 undefined)组合起来形成一个新数组。

<strong>callback 函数只会在有值的索引上被调用;那些从来没被赋过值或者使用 delete 删除的索引则不会被调用。</strong>

再看:

Array(...Array(20))
(20) [undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]

2 in Array(...Array(20))   //true

所以就可以调用map()方法了

原文地址:https://www.cnblogs.com/yezichengy/p/11725501.html

时间: 2024-10-04 10:37:13

js Array 创建具有自定义初始值的数组的相关文章

js定义变量需赋予初始值

var count; for(var i =0;i<5;i++){ count++; } console.log(count); //输出的会是NaN(不是一个数字) //定义变量一定要指定类型count =0; 赋值 定义变量不赋值会显示undefind var xx ; console.log(xx); 原文地址:https://www.cnblogs.com/bestcnblogs/p/9955682.html

js Array

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>javascript中的数组方法</title> <script type="text/javascript"> // js 数组 window.onload=function(){ var a =[2,4,3,12]; document.write(a.lengt

不使用循环,如何创建一个长度为100的数组

前言: 问题描述:在不使用循环的条件下,如何创建一个长度为100的数组,并且数组的每一个元素是该元素的下标? 这是一个比较经典的前端面试题,也可以当笔试题,咋一看,好像难度不大,实际上考察的知识点还不少,值得写篇文章来备忘!废话不多说,直接进入正文! 正文: 为了理解这道题的意思,我们先用传统的方法来实现一下: 使用for方法: var arr = new Array(100); for(var i=0;i<arr.length;i++){ arr[i] = i; } console.log(a

创建 JS Array

创建 Array 的基本方式有两种.第一种是使用 Array 构造函数,如下所示: var colors = new Array(); 也可以如下,如下代码创建了一个包含3个字符串值的数组: var colors = new Array("red","green","blue"); 创建 Array 的第二种方式如下所示: var colors = []; //创建一个空数组 var colors = ["red","

用Oracle11g创建序列后插入数据的初始值老是从2开始

Oracle新表使用序列(sequence)作为插入值,初始值不是第一个, oraclesequence 1 --创建测试表-- 2 CREATE TABLE tbl_test( 3 test_id NUMBER PRIMARY KEY, 4 test_name VARCHAR2(20) 5 ); 6 7 --为tbl_test创建序列-- 8 CREATE SEQUENCE seq_test 9 INCREMENT BY 1 -- 每次加几个 10 START WITH 1 -- 从1开始计数

ArcGIS自定义工具箱-自增字段(可以设置初始值和步长)

联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:字段值初始值为设定值(默认为0),每次增加一个步长(默认为1) 用途:标识字段,分类字段,统计字段 使用方法: 结果: 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 原文地址:https://www.cnblogs.com/xiexiaokui/p/10337571.html

js Array数组的使用

js Array数组的使用 Array是javascript中的一个事先定义好的对象(也可以称作一个类),可以直接使用 创建Array对象 var array=new Array(): 创建指定元素个数的Array对象 var  array=new Array(23): 创建具有指定元素的Array对象: var array=new Array(‘张飒’,'李四','物流','张贲'): 输出Array对象中的所有元素的值 for...in var array=new Array(‘张飒’,'李

JS中集合对象(Array、Map、Set)及类数组对象的使用与对比

原文地址 在使用js编程的时候,常常会用到集合对象,集合对象其实是一种泛型,在js中没有明确的规定其内元素的类型,但在强类型语言譬如Java中泛型强制要求指定类型. ES6引入了iterable类型,Array,Map,Set都属于iterable类型,它们可以使用for...of循环来遍历,都内置forEach方法. 数组 遍历 普通遍历 最简单的一种,也是使用频率最高的一种. let arr = ['a', 'b', 'c', 'd', 'e'] for (let i = 0; i < ar

js Array Map and Set

Array slice slice()就是对应String的substring()版本,它截取Array的部分元素,然后返回一个新的Array: var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G']; arr.slice(0, 3); // 从索引0开始,到索引3结束,但不包括索引3: ['A', 'B', 'C'] arr.slice(3); // 从索引3开始到结束: ['D', 'E', 'F', 'G'] Note:slice()的起止参数包括开始索