2016-11-01 5 views
2
var a = new Array(); 
var b = [1,2,3,4,5,6,7]; 
for(i in b){a[i] = new Array(new Array());} 
a[0][1][2] = Math.random();// error:VM205:1 Uncaught TypeError: Cannot set property '2' of undefined(…) 

자바 스크립트에서 3 차원 배열을 사용하는 방법?3 차원 배열의 자바 스크립트

나는 자바와 같은 방법을 사용합니다.
예 : double a = new double[length][length][length];

미리 메모리를 기억하는 방법.

+1

원하는 값으로 각 배열을 초기화해야합니다. 단순한 선언으로 완전히 할당 될 진정한 다차원 배열은 없습니다. –

+0

왜냐하면 새로운 배열은 길이가 0 인 배열을 설정할 것이기 때문에'a [0] [0]'은 배열을 가질 것이지만'a [0] [1]'은'undefined'가 될 것입니다. 당신이 달성하고자하는 것을 설명하려고한다면, 우리는 무엇인가를 추천 할 수 있습니다 – Rajesh

+1

가능한 복제본 : http://stackoverflow.com/questions/7545641/javascript-multidimension-array – teroi

답변

2

같이 할 수있는, 사전에 변수를 인스턴스에 아무 소용이 없습니다 및 컴파일시 메모리 할당 같은 건 없다 이봐, 때문에, 컴파일 시간이 없습니다! 당신이 정말로 그것을 할 원하는 경우, 그것은 자바처럼 사소한 아니다 : 그것에

const length = 7; 
const range = new Array(length).fill(); 
const array = range.map(e => range.map(e => range.map(e => e))); 

console.log(JSON.stringify(array)); // -> "[[[null,null,null],[null,null,null],[null,null,null]],[[null,null,null],[null,null,null],[null,null,null]],[[null,null,null],[null,null,null],[null,null,null]]]" 

유일한 점은 당신이 항상 확신 할 수 있다는 것입니다, 그만큼 당신이 [0, 길이에 머물로) 경계의 경우 x, yz의 경우 array[x][y][z]은 TypeError를 throw하지 않습니다.

0

당신이 자바 스크립트에서이

const items = [[[]]] // init 3d array 
 

 
// assign values 
 
items[0][0][0] = 0 
 
items[0][0][1] = 1 
 
items[0][0][2] = 2 
 

 
// display 
 
for (const i of items) { 
 
    for (const j of i) { 
 
    for (const k of j) { 
 
     console.log('k = ', k) 
 
    } 
 
    } 
 
}

+0

나는 java와 같이 사용하는 것을 의미합니다. 예 : double a = 새로운 double [length] [length] [length]; – Cery