jsArray创建具有⾃定义初始值的数组
在原⽣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每次执⾏后的返回值(包括)组合起来形成⼀个新数组。
<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()⽅法了
另外,直接通过
Array(20).fill(2)
jsarray删除元素(20) [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
也能很轻松的赋值了
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论