所以,我有一个二维数组,我这样判断:
var grille = new Array(60).fill(new Array(30).fill(false));
我希望能够更改数组中一个单元格的值,但是当我这样做时
grille[x][y] = "new value";
我拥有包含"新值"的所有x数组;在索引y处,而不是数组[x] [y]。
所以我有
grille[1][y] = "new value"
grille[2][y] = "new value"
grille[3][y] = "new value"
而不是
grille[x][y] = "new value"
grille[1][y] = false
例如,。 这可能是一个noob错误,但我对javascript很新,并且不知道如何做到这一点。
感谢您的帮助。
答案 0 :(得分:3)
在你的情况下'新阵列(30).fill(false)'将只创建一次。它不会为新阵列(60)'中的每个元素创建。所以所有60个单元都拥有相同的数组引用。因此,如果您更改一个 - 它将更新其所有参考。
var grille = (new Array(60)).fill().map(function(){ return new Array(30).fill(false);});
这里,对于新阵列中的每个元素(60)' '新阵列(30)'将创建,每个单元格现在拥有不同的引用。希望这会有所帮助。
答案 1 :(得分:1)
所以我正在做的是var grille = new Array(60).fill(new Array(30).fill(false));
填充格栅与new array(30)
相同,并且它没有像我想的那样为每个格栅索引创建一个新数组。
所以我做的是这个
grille= new Array(60);
for (var i = 0; i < grille.length; i++) {
grille[i] = new Array(30).fill(false);
}