Javascript:更改2D数组中的单元格值

时间:2017-03-08 14:03:11

标签: javascript multidimensional-array

所以,我有一个二维数组,我这样判断:

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很新,并且不知道如何做到这一点。

感谢您的帮助。

2 个答案:

答案 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);
}