2017-09-14 107 views
1

我試圖創建3維數組併爲其賦值,基於這裏的答案creating and parsing a 3D array in javascript?創建三維數組並在Javascript中爲它賦值

var myArr = new Array(new Array(new Array())); 

myArr[0][0][0] = "1"; 
myArr[0][0][1] = "2"; 
myArr[0][1][0] = "2"; 
myArr[0][1][1] = "2"; 
myArr[0][2][0] = "3"; 
myArr[0][2][1] = "4"; 

,但我得到這個

Uncaught Typeerror: Cannot set propterty '0' of undefined".

需要一些幫助。

謝謝

+0

這裏的問題是'var myArr = new Array(new Array(new Array()));'轉換爲'myArr [0] [0] = []'表示當試圖訪問'myArr [0] [1 ]'你得到一個未定義的對象,因爲事實上,你從來沒有在該索引處創建一個數組。 –

+2

在JS中沒有多維數組,你只能用嵌套數組來模擬它們。這意味着,你必須將每個成員單獨定義爲子陣列。 – Teemu

+0

@Teemu:你能告訴我該怎麼做嗎? – belldiaz

回答

1

有事先沒有啓動變量在JavaScript和編譯步驟只需吊頂級變量和函數定義,並在ES6,做靜態導入和導出(儘管這還沒有原生支持) [帕特里克羅伯茨]。一個額外的選擇是

var myArr = new Array(); 
myArr[0] = new Array(); 
myArr[0][0] = new Array(); 
myArr[0][0][0] = "1"; 
myArr[0][0][1] = "2"; 
myArr[0][1] = new Array(); 
myArr[0][1][0] = "2"; 
myArr[0][1][1] = "2"; 
myArr[0][2] = new Array(); 
myArr[0][2][0] = "3"; 
myArr[0][2][1] = "4"; 
+0

對不起,我的意思是Java腳本,正在修復 – Legman

+1

從技術上講有一個編譯時間,因爲它是JIT編譯語言。編譯步驟只是提升頂層變量和函數定義,而在ES6中,執行靜態導入和導出(儘管尚未原生支持)。 –

+1

@Legman爲什麼在第3行沒有半結腸? myArr [0] [0] = new Array() – belldiaz

0

你可以這樣做(但建立在JavaScript 3D陣列更完成的東西,請考慮改變你的方法來處理數據。):

var myArr = new Array(); 
 
myArr[0] = new Array(); 
 
myArr[0][0] = new Array(); 
 
myArr[0][0][0] = "1"; 
 
myArr[0][0][1] = "2"; 
 
myArr[0][1] = new Array(); 
 
myArr[0][1][0] = "2"; 
 
myArr[0][1][1] = "2"; 
 
myArr[0][2] = new Array(); 
 
myArr[0][2][0] = "3"; 
 
myArr[0][2][1] = "4"; 
 

 
console.log(myArr[0][2][0]);