我真的很难在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而不是字母。我尝试了很多不同的东西。
答案 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
。