0

我真的很难用 Javascript 填充我的二维数组。

我有一个不同的数组,里面有很多我想添加到我的“板”的字母,但即使是板似乎也不能正常工作。每当我尝试使用 draw Board 方法将板打印到网页时,我都会在字母 A 所在的位置得到 NaN。其余的显示数字 0。

var ROW = 10;
var COLUMN = 10;
var board = [['A', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]];

function drawBoard(board) {
    var str = '';
    for (var x = 0; x < ROW; x++){
        str += '<div class="row">';
        for (var y = 0; y < COLUMN; y++){
            str += '<div class="column">' +
            + board[x][y] + '</div>' + '</div>';
        }
        str += '</div>';
    }
    $('#board').append(str);
}

$(function(){
    drawBoard(board);
});

我想要做的是有这个字符串:

var Letters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M'];

为 board[x][y] = Letters.pop() 创建一个 for 循环。然后用新字母显示板。

有没有比只运行两个 for 循环更好的方法将数组添加到二维数组?为什么我的电路板显示 NaN 而不是字母。我尝试了很多不同的东西。

4

1 回答 1

2

回答第一个问题。如果您查看您的代码:

       str += '<div class="column">' +
        + board[x][y] + '</div>' + '</div>';

you can see that you have a + +board[x][y], not a + when adding board[x][y]. The unary + tries to convert the value of board[x][y] to a number before concatenating giving you the NaN error( as @Bergi pointed out).

To add an element to the end of an array you can use the push() method (in your caseboard.push(Letters)). This will place the element, which can be an array, at the end of the array.

If you want to replace a line in the array you can use board[x] = Letters.

于 2012-09-17T08:16:02.460 回答