0

Javascript で 2 次元配列を埋めるのに本当に苦労しています。

「ボード」に追加したい文字がたくさんある別の配列がありますが、ボードでさえ正しく機能していないようです。draw Board メソッドを使用して Web ページにボードを印刷しようとすると、文字 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 ループを作成します。そして、新しい文字でボードを表示します。

2 つの for ループを実行するだけでなく、配列を 2 次元配列に追加するより良い方法はありますか? ボードに文字ではなく NaN が表示されるのはなぜですか。私は多くの異なることを試しました。

4

1 に答える 1

2

最初の質問に答えるために。あなたのコードを見ると:

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

を追加すると、+ +board[x][y]ではなくがあることがわかります。単項は、連結してエラーが発生する前に、値を数値に変換しようとします(@Bergiが指摘したように)。+board[x][y]+board[x][y]NaN

配列の末尾に要素を追加するには、push()メソッドを使用できます (あなたの場合はboard.push(Letters))。これにより、配列にすることができる要素が配列の最後に配置されます。

配列内の行を置き換えたい場合は、 を使用できますboard[x] = Letters

于 2012-09-17T08:16:02.460 に答える