抱歉,我真的找不到代码中的错误。
所以我有这段代码,它用某些随机值填充一个二维数组,该数组的作用就像一 block 板,当前大小为 5x5。
function createTableArray() {
var boardSize = 5;
var board = new Array(boardSize);
var boardCol = new Array(boardSize);
var prevVal = 0;
for (var i=0;i<boardSize;i++) {
for (var j=0;j<boardSize;j++) {
boardCol[j] = getRandomColVal(i, boardSize - j);
}
board[i] = boardCol;
console.log(i + " within loop temp Col : " + boardCol);
console.log(i + " within loop Board : " + board[i]);
}
console.log("Before returning");
for (var i=0;i<boardSize; i++) {
console.log(i + " Board: " + board[i]);
}
return board;
}
我创建了一个“返回之前”日志来再次检查面板,但结果是所有面板内容仅具有与最后一个 boardCol 相同的值。 (抱歉解释不好,我只是以视觉方式呈现)。
它应该是这样的(因为这是我记录时 boardCol 的值):
Array [ 5,8,12,13,14 ]
Array [ 20,24,25,27,28 ]
Array [ 38,39,40,41,43 ]
Array [ 48,54,55,56,57 ]
Array [ 64, 67, 71, 72, 73 ]
但结果是这样的:
Array [ 68, 71, 72, 73, 74 ]
Array [ 68, 71, 72, 73, 74 ]
Array [ 68, 71, 72, 73, 74 ]
Array [ 68, 71, 72, 73, 74 ]
Array [ 68, 71, 72, 73, 74 ]
抱歉,我真的不明白它们如何具有相同的值。
最佳答案
就像 minitech 在评论中所说:board
的每一列都需要一个不同的数组。试试这个:
function createTableArray() {
var boardSize = 5;
var board = new Array(boardSize);
for (var i=0; i<boardSize; i++) {
var boardCol = new Array(boardSize);
for (var j=0; j<boardSize; j++) {
boardCol[j] = getRandomColVal(i, boardSize - j);
}
board[i] = boardCol;
}
return board;
}
关于二维数组的Javascript循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25021389/