2012-07-04 13 views
6

Czy istnieje czystsze/krótszy sposobem sprawdzenia, czy wielowymiarowa tablica jest niezdefiniowane (który unika niezdefiniowany błąd w dowolnym wymiarze) niż:Javascript - Sprawdzenie, czy wielowymiarowa tablica jest niezdefiniowany

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

Jak w następujący sposób wygeneruje błąd, jeśli albo arr lub arr[d1] jest niezdefiniowane:

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

'if (ARR && ARR [D1] && ARR [D1] [D2]) {..}' - Tablice nigdy nie są fikcyjne, więc to działa. –

+0

Twój kod nie będzie działał, gdy 'arr = null'. – Bergi

Odpowiedz

2

To frustrujące, nie można przetestować arr [D1] [D2] w górę. Ale z tego co wiem, javascript nie obsługuje wielowymiarowych tablic.

więc jedyną opcją masz to czego sugested z

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

albo zawinięte w funkcji, jeśli używasz go regularnie.

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

Zostanie zwrócony w jednym sprawdzeniu za pomocą try/catch.

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

Demo:http://jsfiddle.net/r5JtQ/

przykład użycia:

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)); 
Powiązane problemy