在Javascript中向二维数组添加字符

时间:2012-09-17 08:11:38

标签: javascript arrays multidimensional-array

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

我有一个不同的数组,有很多字母,我想添加到我的'板',但即使是电路板似乎也没有正常工作。每当我尝试使用绘图板方法将电路板打印到网页时,我会在字母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'];

将一个for循环设为board [x] [y] = Letters.pop()。然后用新信件显示电路板。

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

1 个答案:

答案 0 :(得分:2)

回答第一个问题。如果你看一下你的代码:

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

添加+ +board[x][y]时,您可以看到+而不是board[x][y]。一元+尝试在连接之前将board[x][y]的值转换为数字,从而给出NaN错误(如@Bergi指出的那样)。

要将元素添加到数组的末尾,您可以使用push()方法(在您的情况下为board.push(Letters))。这会将元素(可以是数组)放在数组的末尾。

如果要替换数组中的一行,可以使用board[x] = Letters