0

我找不到这段代码哪里出了问题,并尝试了我能想到的所有组合。我已经搜索了以前的答案,但到目前为止一无所获。事实上,大多数答案似乎都说这应该有效......

似乎 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

4

0 回答 0