抱歉,我的代码中找不到错误。
所以我有这个代码填充一个二维数组,其中有一些随机值,它们就像一块板,当前大小为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 ]
对不起,我真的不知道它们都有相同的价值。
答案 0 :(得分:2)
就像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;
}