新的Array(9)语法的目的是什么?

时间:2018-01-20 23:41:07

标签: javascript arrays constructor

我不能在Array-constructor创建的数组上使用.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)
&#13;
&#13;
&#13;

为什么不能在.map占位符的数组上使用emptyArray(3) - 语法的目的是什么?

1 个答案:

答案 0 :(得分:3)

您可以使用new Array(n)创建一个稀疏数组,一个带有间隙的数组,长度为n。根据MDN关于Array#map的文章:

  

由于规范中定义的算法是否为数组   调用的地图是稀疏的,结果数组也将是稀疏的   保持相同的指数空白。

要解决这个问题,你可以使用Array#fill来为稀疏数组填充一个值(即使undefined会这样做),然后你可以用你想要的任何颜色来映射它。

&#13;
&#13;
// 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);
&#13;
&#13;
&#13;