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

时间:2015-05-27 02:33:14

标签: 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功能不起作用。

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

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

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

1 个答案:

答案 0 :(得分:0)

我是一个号码。你正在为这个数字分配子阵列。

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);