2012-09-17 78 views
0

我真的很難嘗試用Javascript填充我的二維數組。將字符添加到Javascript中的二維數組中

我有一個不同的陣列,有很多字母,我想添加到我的'板',但即使板看起來沒有正常工作。每當我嘗試使用繪圖板方法將電路板打印到網頁上時,我都會得到NaN作爲字母A所在的位置。其餘的是顯示數字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循環,只是板[X] [Y] = Letters.pop( )。然後用新的字母顯示板子。

有沒有更好的方法可以將數組添加到二維數組中而不僅僅是運行兩個for循環? 爲什麼我的電路板顯示NaN而不是字母。我嘗試了很多不同的東西。

+0

你可能真的使用'

'元素 - 它們適合這個用例:-) – Bergi

回答

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

+0

很好的發現,雖然它不是'++',但是一元'+'操作符 – Bergi

+0

你是對的。好發現你到。我會更新答案。 –