首页 > 解决方案 > 用嵌套数组计数

问题描述

我正在尝试计算嵌套数组中数组的索引 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
}

感谢您的帮助!

标签: javascriptarraysfor-loopnestedgrid

解决方案


将您的代码更改为

    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])中保存一个实例,这意味着是,因此,当您更改所有元素时,在第二个循环的最后一步中您会更改,因此所有元素都以这种方式更改。[0,0]grid[i]currentRow[0]==currentRow[1]truecurrentRow[j][1]currentRowcurrentRow[2][1]=2currentRow


推荐阅读