2012-07-04 33 views
6

tanımsız olup olmadığını kontrol etme daha (herhangi bir boyutta bir tanımsız hata önler) çok boyutlu dizi tanımsız olup olmadığını kontrol etmeyi bir temizleyici/kısa yolu var mı: yapıyor gibiJavaScript çok boyutlu dizi

if(arr != undefined && arr[d1] != undefined && arr[d1][d2] != undefined){ 
    // arr[d1][d2] isn't undefined 
} 

aşağıdaki arr veya arr[d1] ya tanımlanmamış ederseniz bir hata olacaktır: Bu sinir bozucu oluyor

if(arr[d1][d2] != undefined){ 
    // arr[d1][d2] isn't undefined 
} 
+2

'halinde (arr && dizi [d1] && dizi [d1] [d2]) {..} ' - Diziler asla felç değildir, bu yüzden çalışır. –

+0

Kodunuz arr = null olduğunda çalışmaz. – Bergi

cevap

2

sen [d2] dümdüz yukarı dizi [d1] için test edemez. Ama ne topladığımdan, javascript çok boyutlu dizileri desteklemiyor.

Yani tek seçenek

if(arr != undefined && arr[d1] != undefined && arr[d1][d2] != undefined){ 
    // arr[d1][d2] isn't undefined 
} 

ile sugested Yoksa düzenli kullanırsanız bir fonksiyonu sarılı şeydir.

function isMultiArray(_var, _array) { 

    var arraystring = _var; 

    if(_array != undefined) 
     for(var i=0; i<_array.length; i++) 
     { 
      arraystring = arraystring + "[" + _array[i] + "]"; 
      if(eval(arraystring) == undefined) return false; 
     } 

    return true; 
} 

if(! isMultiArray(arr, d)){ 
    // arr[d1][d2] isn't undefined 
} 
2

Bu, try/catch komutunu kullanarak tek bir kontrolde iade edecektir.

function isUndefined(_arr, _index1, _index2) { 
    try { return _arr[_index1][_index2] == undefined; } catch(e) { return true; } 
} 

Gösteri:http://jsfiddle.net/r5JtQ/

Kullanımı Örnek:

var arr1 = [ 
    ['A', 'B', 'C'], 
    ['D', 'E', 'F'] 
]; 

// should return FALSE 
console.log(isUndefined(arr1, 1, 2)); 

// should return TRUE 
console.log(isUndefined(arr1, 0, 5)); 

// should return TRUE 
console.log(isUndefined(arr1, 3, 2)); 
İlgili konular