我找不到这段代码哪里出了问题,并尝试了我能想到的所有组合。我已经搜索了以前的答案,但到目前为止一无所获。事实上,大多数答案似乎都说这应该有效......
似乎 myArray[0][0] = [0,1] 会将 [0, 1] 分配给 myArray[0][0] 和 myArray 1 [0] 等
// my drawing variables
pad = 20.5;
positionX = pad;
positionY = pad;
boxSize = 40;
gridSize = 9;
gridSpacing = 50;
// This creates 2 dimensional 9 x 9 array
var clickMapArray = new Array(gridSize);
clickMapArray.fill(new Array(gridSize));
// faulty FOR loop
for (var i = 0; i < gridSize; i++) {
positionY = pad;
for (var j = 0; j < gridSize; j++) {
// This following line assigns many index positions
// clickMapArray [0][0] AND [1][0] AND [2][0] etc till [8][0]
// all with the same value, and it does it all in one step of the debugger.
clickMapArray[i][j] = new Array(positionX, positionY);
positionY += gridSpacing;
}
positionX += gridSpacing;
}
// now having gone through the completed loop, it has overwritten many values
console.log(clickMapArray[0][0]) // should be [20.5, 20.5] and is actually [420.5, 20.5]
console.log(clickMapArray[1][0]) // should be [70.5, 20.5] and is actually [420.5, 20.5]
console.log(clickMapArray[2][0]) // should be [120.5, 20.5] and is actually [420.5, 20.5]
我不明白这是如何发生的,也不明白如何解决或解决它。
编辑
我停止使用 array.fill 并将其更改为
var clickMapArray = new Array(gridSize);
for (var i = 0; i < gridSize; i++){
clickMapArray[i] = new Array(gridSize)
}
它的工作原理,感谢epascarello