2013-11-15 61 views
1

我試圖在3D的JavaScript數組來設置值...的Javascript「無法設置屬性」

var a = []; 
var b = []; 
var c = []; 
var array = [a,b,c]; 
array[0][0][0] = 'value'; 

此代碼返回錯誤:「無法設置屬性‘0’的未定義」,但二維數組工作常:

var a = []; 
var b = []; 
var array = [a,b]; 
array[0][0] = 'value'; 
+0

無論那些是一個三維數組的數組。他們都是二維數組。 – Ennui

+0

難道你沒有看到'[a,b,c]'只是一個包含三個元素的數組嗎?想象一下它會是'[1,2,3]'。 –

回答

2

這不是一個三維陣列,那是一個二維數組,從字面上翻譯爲:在你的第一封

[[],[],[]] 
2

xample你沒有一個三維數組。 你有什麼是[[],[],[]] - 一個有3個平行陣列的數組。 這就是爲什麼你不能訪問array[0][0][0],因爲你得到的最深處是2級。這就是爲什麼你的代碼在第二個例子中起作用。

我覺得你對數組感到困惑。也許你應該再次閱讀有關編程,數組和整個想法?


如果你想有3個leves數組,這是一個很好的例子:在一個陣列是在陣列本身

var a3l_a = [[[]]]; 
// equals: 
var a3l_b = new Array(new Array(new Array()));