代码之家  ›  专栏  ›  技术社区  ›  Anwarus

使用填充方法创建二维数组[重复]

  •  1
  • Anwarus  · 技术社区  · 7 年前

    fill 功能。看起来是这样的:

    let map = new Array(3)
                .fill(new Array(3)
                    .fill(0));
    

    map[1][1] = 1;
    

    [[0, 0, 0],[0, 1, 0],[0, 0, 0]]
    

    [[0, 1, 0],[0, 1, 0],[0, 1, 0]]
    

    看起来所有这些子数组都引用一个数组,但为什么呢?

    2 回复  |  直到 7 年前
        1
  •  5
  •   Mark    7 年前

    问题是 fill(new Array(3))

    你可以用 Array.from()

    let map = Array.from(Array(3), () => new Array(3).fill(0)) 
    
    map[1][1] = 1;
    console.log(map)

    在这里,它将为每个元素调用函数,以确保为每个元素创建一个唯一的数组。

        2
  •  0
  •   Chidi Williams    7 年前

    maps = new Array(3)
                .fill().map(u => new Array(3).fill(0));
    
    maps[1][1] = 1;