用嵌套数组计数

Counting up with nested arrays

我正在尝试计算嵌套数组中数组的索引 1 值。我想要的输出是:

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

但是我的输出如下:

[ [ [ 0, 2 ], [ 0, 2 ], [ 0, 2 ] ] ]

这是我的代码 运行,我假设问题落在第二个 for 循环中:

let width = 3
let height = 1
var grid = [];
let y = 0

for(var i=0; i<height; i++) {
    grid[i] = new Array(width).fill([0,0])
}
let currentRow = grid[0]

for (let j = 0; j<grid[0].length; j++){
  currentRow[j][1] = j
}

感谢您的帮助!

将您的代码更改为

    let width = 3;
    let height = 1;
    var grid = [];
    let y = 0;
    for (var i = 0; i < height; i++) {
      grid[i] = new Array(width);
      for (let j = 0; j < grid[i].length; j++) {
        grid[i][j] = [0, 0];
      }
    }
    let currentRow = grid[0];
    
    for (let j = 0; j < grid[0].length; j++) {
      currentRow[j][1] = j;
    }

当你使用 grid[i] = new Array(width).fill([0,0]) 时,你在你的 grid[i] 数组中保存了一个 [0,0] 的实例,这意味着 currentRow[0]==currentRow[1]true,所以当你更改 currentRow[j][1] 所有 currentRow 元素都已更改,在第二个循环的最后一步中更改 currentRow[2][1]=2 因此所有 currentRow 元素都以这种方式更改。