javascript循环没有给出预期的结果

标签 javascript arrays for-loop

好吧,我已经很长时间没有接触 JS 了,需要一些简单循环的帮助。我正在构建一个跳棋游戏。这是到目前为止的代码:

checkerboard = [[null,null,null,null,null,null,null,null],
                [null,null,null,null,null,null,null,null],
                [null,null,null,null,null,null,null,null],
                [null,null,null,null,null,null,null,null],
                [null,null,null,null,null,null,null,null],
                [null,null,null,null,null,null,null,null],
                [null,null,null,null,null,null,null,null],
                [null,null,null,null,null,null,null,null]];
function setSquare(player, row, col) {
    // which places a player (either 'R' or 'B') at a particular row and column on the board.
    checkerboard[row][col] = player;
    return checkerboard[row][col];
}

function getPieceAt(row, col) {
    //returns the piece at a particular row and column if there's no piece at that position, it should return null//
    return checkerboard[row][col] || null;
}


function clearBoard(array){
    for(var i = 0; i < array.length; i++){
        var subArray = i;
        for(var x = 0; x < subArray.length; x++){
           subArray[i][x] = 'hello';
        }
    }

}

clearBoard 功能不起作用。

该函数应该将数组的所有值恢复为空。

问题:它似乎没有做任何事情,而且我没有看到我错过了什么。我用返回尝试了它,返回“数组”,但它不起作用,所以我把它拿出来,认为它可能正在调用原始的硬编码数组(棋盘 - 充满空值)。我的循环出了什么问题?

//为了更容易测试,我暂时让它做相反的事情(否则我每次保存并重新运行代码时都必须使用 setSquare 函数将值设置为 null 以外的值,因为我使用的环境将所有内容恢复为原始/空。这很乏味。)一旦代码可以将所有值设置为“hello”,我知道它可以将它们设置为空。//

最佳答案

i 是一个数字。您正在将子数组分配给该数字。

function clearBoard(array){
    for(var i = 0; i < array.length; i++){
        var subArray = i; // subarray goes 0, 1, 2, 3, ... not an array but a number
        for(var x = 0; x < subArray.length; x++){
            subArray[i][x] = 'hello'; // your indexing too much.
        }
    }
}

我认为这对你来说会更有效

function clearBoard(array){
    var subArray;
    for(var i = 0; i < array.length; i++){
        subArray = array[i];
        for(var x = 0; x < subArray.length; x++){
            subArray[x] = null; // this will bring you back to the beginning state
        }
    }
}

这样调用它。

clearBoard(checkerboard);

关于javascript循环没有给出预期的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30472184/

相关文章:

javascript - 仅切换 Reactjs 中单击的菜单

java - 我的循环中出现错误。线程 "main"java.util.NoSuchElementException 中出现异常。错误是我的扫描仪?

php - 如何在php中连接两个数组?

django - 如何在 Django 模板中进行 1 次迭代后中断 "for loop"

javascript - Chrome 扩展程序中的消息传递问题

javascript - 与多个页面上的 div 同步内容

c++ - 静态二维数组

c++ - 我无法理解 C++ for dummies 书中一行代码的结果

linux - Linux 中的 for 循环在不存在文件时将模式视为文件名

javascript - 如何调试不工作的基于 AJAX 的 HighChart?