2011-02-08 70 views
0

想象一下以下情況:有沒有一種方法可以安全地引用Javascript多維數組?

var array = new Array ([0,0,0,0], [0,0,1,0], [0,0,0,0]); 
var x = 0; var y = 0; 
if(array[y][x]) { 
// x and y can be any integer 
// code should execute only for array[1][2] 
} 

xy是指一個項目存在的陣中,一切都很好。否則,該腳本終止。顯然,這不是我想要的行爲 - 是否可以安全地引用Javascript多維數組?

+0

如果你想安全地使用你的數組,你應該在if語句中檢查你的數組維數,然後使用它。 – Eduard 2011-02-08 15:34:23

+1

你不是說代碼只能執行`array [1] [2]`? – user113716 2011-02-08 15:52:59

+0

@帕特里克:謝謝,編輯。你有了主意,對吧?這只是一個快速通用的例子:) – 2011-02-08 17:31:13

回答

1

需要檢查所引用的特性存在於陣列的每個電平:

if(array[y] && array[y][x]) { 
// x and y can be any integer 
// code should execute only for array[2][1] 
} 
0

可以使用in關鍵字來檢查是否有該陣列的第y個元件,以及是否該元素具有第x個元素作爲初步檢查:

if (y in array && x in array[y] && array[y][x]) {... 

JavaScript數組與其說是多維因爲它們是化合物/鋸齒狀。您也可以使用Array.length,但這依賴於作爲數組的對象,這是我們正在檢查的內容的一部分,因此使檢查複雜化。

0

一點比其他的答案更詳細:

var array = [ [0,0,0,0], [0,0,1,0], [0,0,0,0] ]; 
var x = 0; var y = 0; 
if(array.hasOwnProperty(y) && array[y].hasOwnProperty(x) && array[y][x] !== 0) { 
    // x and y can be any integer 
    // code should execute only for array[2][1] 
} 

...但是這個人是不受補充Array.prototype

此外,顯式測試與零相等使它更具可讀性,恕我直言。 (補償前面條件的可讀性降低...:-P)

相關問題