我不能对由具有设置长度的数组构造函数创建的数组使用.map
:
// create an array with 9 empty elements
let array = new Array(9);
// assign an array to each of the array's elements
array = array.map(() => new Array(1, 2, 3));
console.log(array);
通过使用for循环实现预期效果的一种方法:
// create an array with 9 empty elements
let array = new Array();
// assign an array to each of them
for(let i = 0; i < 9; i++){
array.push(new Array(1, 2, 3));
}
console.log(array)
为什么不能在带有.map
占位符的数组上使用empty
?Array(3)
语法的目的是什么?
发布于 2018-01-20 23:56:13
您可以使用new Array(n)
创建一个稀疏数组,这是一个具有间隙的数组,其长度为n
。根据MDN关于Array#map的文章
由于规范中定义的算法--如果调用映射的数组是稀疏的--结果数组也将是稀疏的,使相同的索引保持空白。
要解决这个问题,您可以使用Array#fill,用一个值填充稀疏数组(甚至undefined
也会这样做),然后您可以任意映射它。
// create an array with 9 empty elements
const array = new Array(9);
// assign an array to each of the array's elements
const result = array
.fill()
.map(() => [1, 2, 3]);
console.log(result);
https://stackoverflow.com/questions/48362242
复制相似问题