代码之家  ›  专栏  ›  技术社区  ›  Rob Monhemius

新数组(9)语法的用途是什么?

  •  1
  • Rob Monhemius  · 技术社区  · 8 年前

    我不能使用 .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)

    为什么不能 .地图 用于具有 empty 占位符?该项目的目的是什么 Array(3) -语法?

    1 回复  |  直到 8 年前
        1
  •  3
  •   Ori Drori    8 年前

    您可以使用 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);