2016-11-01 40 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(…) 

如何在javascript中使用三維數組?javascript中的三維數組

我的意思是如何使用它像java一樣。
例如:double a = new double[length][length][length];

如何預先記憶記憶。

+1

您需要使用所需的值初始化每個陣列。沒有真正的多維數組將被完全分配只有一個聲明。 –

+0

它的原因是,新的數組將設置一個長度爲0的數組。因此'a [0] [0]'將有一個數組,但'a [0] [1]'將會是'未定義的'。如果你試圖解釋你想達到什麼,我們可以推薦一些 – Rajesh

+1

可能的重複:http://stackoverflow.com/questions/7545641/javascript-multidimensional-array – teroi

回答

2

在Javascript中,有一個在提前實例變量沒有用的,並有編譯時內存分配沒有這樣的事,因爲,嘿嘿,沒有編譯時間!但是,如果你真想做到這一點,它不是在Java中的瑣碎:

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,長度留)的邊界,array[x][y][z]對於任何x,yz都不會拋出TypeError。

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 = new double [length] [length] [length]; – Cery