2012-05-27 3 views
1

나는이 코드를 작성하여 일련의 dom 요소에서 희소 배열을 긁어 냈다. 하나의 차원에서 코드가 작동하지만 2 차원에서는 실패합니다. 내가 놓친 게있어?반복을 통해 자바 스크립트에서 스파 스 배열을 만드는 방법은 무엇입니까?

23   function initCellHover(){ 
24     $cells.each(function(){ 
25       var arrayX = $(this).position().left/cellWidth; 
26       var arrayY = $(this).position().top/cellHeight; 
27       var arrayValue = $(this); 
28       cellLookup[arrayX][arrayY] = arrayValue; 
29     });  
30   } 
+0

문제가 이것으로 무엇 : 필요한 경우 그것은 이미 그것을 배열의 속성이 있는지 확인하고 추가하는 것이 무엇입니까? 오류 메시지가 있습니까? –

+0

코드가 여기에 있습니다. 'cellHeight','cellWidth'가 정확하게 정의되어 있는지 확인 했습니까? 정확히 어떻게 실패합니까? – Pierre

+0

잡히지 않은 TypeError : undefined의 '0'속성을 설정할 수 없습니다. 오류가 발생했습니다. 나는 시도하면 같은 오류가 발생 = [[]]; a [1] [22] = "test"; 그러나 b = []; b [22] = "테스트"; 수확량 [,,,,,,,,,,,,,,,,,,,,, "테스트"]. 다른 두 속성은 모두 잘 작동합니다. 자바 스크립트가 중첩 된 배열을 처리하는 방법에 문제가 있다고 생각합니다. 그렇다면이 문제에 대한 해결책보다 해결 방법에 더 관심이 있습니다. –

답변

5

28 행에는 정의되지 않은 속성을 나타낼 수 있습니다.

cellLookup[arrayX] = cellLookup[arrayX] || []; 
cellLookup[arrayX][arrayY] = arrayValue; 
+0

고마워요, 저를 올바른 길로 인도 해주었습니다. if (! cellLookup [arrayX]) {cellLookup [arrayX] = []}; if (! cellLookup [arrayX] [arrayY]) {cellLookup [arrayX] [arrayY] = []} 셀 룩업 [배열 X] [배열 Y] = 배열 ​​값; 그것을 해결하기 위해. –

관련 문제