二维数组的Javascript循环

标签 javascript arrays loops

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

所以我有这段代码,它用某些随机值填充一个二维数组,该数组的作用就像一 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/

相关文章:

javascript - 光滑的 slider 。有没有办法检查 slider 滑动的位置?

javascript - 由于硬件限制,哪些旧版浏览器仍在使用?

javascript - 如何防止 Cufon 在子菜单中被继承?

java - for循环打印无效值?

java - 如何将整数的小映射表示为数组?

c++ - 为什么无论我输入什么,我的 "while"循环都会执行?

javascript - 含义 - "//= require angular/angular"

javascript - 一键点击后在javascript中的两个div中设置两个不同的图像

python - 在没有字符串切片的情况下打印字符串中的奇数字符?

python - 创建循环?