标签:map 20 undefined 自定义 创建 初始值 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()方法了
标签:map,20,undefined,自定义,创建,初始值,js,数组,Array 来源: https://www.cnblogs.com/yezichengy/p/11725501.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。