2013-05-24 4 views
0

3 차원 배열을 만들려고했는데 쉽게 할 수 없었습니다.다차원 배열 만들기 (JS)

array = [[[]]]; 

또는

array = [][][]; 

또는
array = []; array[] = []; array[][] = []; 

예를 들어 작동하지 않을 것입니다. (콘솔은 두 번째 배열이 객체가 아니라 'undefined'이거나 두 번째와 세 번째 예제가 구문 분석 오류라고 가정합니다).

배열의 색인과 내용이 무엇인지 알지 못하기 때문에 정보를 하드 코딩 할 수 없습니다 (즉석에서 작성되며 사용자의 입력에 따라 다릅니다). 첫 번째 배열은 인덱스 4192를 가질 수 있습니다). 할당하기 전에 모든 배열을 만들어야 할 수도 있지만, 3 차원 배열을 정의하는 더 쉬운 방법이 있다면 훨씬 쉽고 빠를 것입니다. (약 2 개의 어레이, 25 개의 서브 어레이 및 800 개의 서브 어레이가있을 것입니다.) 밀리 초마다 생명을 구할 수 있습니다.

도와주세요.

답변

3

JavaScript가 동적으로 입력됩니다. 배열을 배열에 저장하면됩니다.

function loadRow() { 
    return [1, 2, 3]; 
} 

var array = []; 
array.push(loadRow()); 
array.push(loadRow()); 
console.log(array[1][2]); // prints 3 
1

자바 스크립트의 배열은 실제 배열이 아니므로 실제로는 다차원 배열이 아닙니다. 자바 스크립트에서는 배열 안에 배열이 있습니다. 이 같은 정적 배열을 정의 할 수 있습니다 :이 같은

var a = [ 
[1,2,3], 
[4,5,6], 
[7,8,9] 
]; 

또는 동적 :

var d = []; 
var d_length = 10; 
for (var i = 0;i<d_length;i++) { 
    d[i] = []; 
} 

UPDATE

또한 일부 도우미 기능을 사용할 수 있습니다

function ensureDimensions(arr,i,j,k) { 
    if(!arr[i]) { 
    arr[i] = []; 
    } 
    if(!arr[i][j]) { 
    arr[i][j] = []; 
    } 
} 

function getValue(arr,i,j,k) { 
    ensureDimensions(i,j,k); 
    return arr[i][j][k]; 
} 

function setValue(arr,newVal,i,j,k) { 
    ensureDimensions(i,j,k); 
    arr[i][j][k] = newVal; 
} 
+0

감사 ,하지만 내가 언급 한대로 배열에 무엇이 있을지 또는 얼마나 오래 t인지 알지 못한다. 이 방법은 슬프게도 나를 도울 수 없습니다. – user1916542