二维数组的Javascript循环

时间:2014-07-29 17:24:18

标签: javascript arrays loops

抱歉,我的代码中找不到错误。

所以我有这个代码填充一个二维数组,其中有一些随机值,它们就像一块板,当前大小为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 ]

对不起,我真的不知道它们都有相同的价值。

1 个答案:

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