2012-09-17 5 views
0

저는 자바 스크립트로 2 차원 배열을 채우려 고 노력하고 있습니다.자바 스크립트에서 2 차원 배열에 문자 추가

나는 내 '보드'에 추가하고 싶은 문자가 많은 배열을 가지고 있지만 보드가 제대로 작동하지 않는 것으로 보인다. Draw Board 메서드를 사용하여 웹 페이지에 보드를 인쇄하려고 할 때마다 문자 A가있는 곳에서 NaN을 얻습니다. 그냥 보드 [X] [Y] = Letters.pop (

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

는 루프를합니다 나머지는 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); 
}); 

는 내가하고 싶은 것은이 문자열을 가지고있는 숫자를 표시). 그런 다음 새로운 글자로 보드를 표시하십시오.

2 개의 for 루프를 실행하는 것보다 2 차원 배열에 배열을 추가하는 더 좋은 방법이 있습니까? 왜 내 보드에 문자가 아닌 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

이 맞습니다. 그럼 당신에게 발견되었습니다. 나는 대답을 업데이트 할 것이다. –

관련 문제