2011-09-29 3 views
1

다차원 배열을 설정해야합니다.다차원 배열을 설정하고 .push()를 사용하는 데 문제가 있습니다.

예를 들어, 내가 루프에서 내가 어느 colArray의 길이 될 것이라고, cacheArray[column_number].length를 확인할 것, 이제

cacheArray[0] 등을 사용하여 액세스 할 것 cacheArray = new Array(col0Array, col1Array, col2Array);을 ...있다. 에 따라 달라 지겠습니까 cacheArray[column_number].push("my_class");

내 의도는 하위 열 배열에 CSS 클래스 이름을 추가하고 체크 무늬 색상 효과를 얻을 수 있도록 해당 열의 하위 배열에서 이전 값을 확인하는 것입니다. 하지만 내가했던 것처럼 밀어 넣으면 오류가 발생합니다. cacheArray[column_number].push은 기능이 아닙니다.

이 문제에 접근하는 방법에 대한 아이디어가 있습니까?

답변

0

어쩌면 내가 누락되었습니다. 그러나 치수 배열 중 하나만 제공하기 때문에 다중 (2와 반대) 차원 배열을 초기화하는 경우 cacheArray [column_number] .push가 함수로 존재하지 않습니다.

cacheArray [column_number]에있는 배열로 밀어 넣기 때문에 2 차원 배열을 초기화 한 경우 cacheArray [column_number] .push ("my_class")가 작동합니다. 따라서 column_number가 1이고이 항목이 푸시 된 첫 번째 항목 인 경우 cacheArray [1] [0]은 "my_class"와 같을 것입니다.

어쨌든 더 쉬운 방법이 있다고 생각합니다. 아마도 각 열의 마지막 값과 현재 값을 저장할 수있는 개체 배열일까요?

1

데이터 구조를 초기화하는 방법은 완전히 명확하지 않습니다.

var cacheArray = [[], [], []]; 

는 그런 다음 그 서브 어레이 각각에 값을 푸시 할 수 : 각 컬럼 자체 배열 인 경우에 세 개의 열들의 어레이를 초기화한다 cacheArray위한 데이터 구조 초래

cacheArray[0].push("my_class"); 
cacheArray[0].push("his_class"); 
cacheArray[0].push("nobodys_class"); 
cacheArray[1].push("their_class"); 
cacheArray[2].push("your_class"); 

:

[["my_class", "his_class", "nobodys_class"], ["their_class"], ["your_class"]]; 

현대적인 브라우저에서, 당신은 여기서 일 볼 수 있습니다 http://jsfiddle.net/jfriend00/f9hy4/. 나는 샘플 코드가 JSON.stringify()이 결과를 시각화하기 때문에 현대적인 브라우저라고 할 수있다.

0

배열을 cacheArray으로 선언하면 1 차원으로 초기화되므로 초기화하면 2 차원 배열이됩니다.
실제로 새 값을 cacheArray[column_number][some_index] (종료되지 않음)으로 밀어 넣고 있습니다.이 문은 cacheArray[column_number][some_index]에있는 my_class이 존재하지 않음을 나타내므로 오류가 발생합니다.

이 시도 할 수 있습니다 :
cacheArray = new Array(col0Array, col1Array, col2Array);
for(var i = 0, i = cacheArray.length; i++)
cacheArray[i] = new Array();
cacheArray[column_number].push("my_class");

관련 문제