2012-07-04 19 views
6

C'è un detergente/via più breve di verificare se un array multidimensionale è indefinito (che evita un errore non definito in qualsiasi dimensione) di:Javascript - Verifica se un array multidimensionale è indefinito

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

come fare la seguente getterà un errore se uno o arrarr[d1] è indefinito:

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

'if (arr && arr [d1] && arr [d1] [d2]) {..}' - Gli array non sono mai falsi, quindi funziona. –

+0

Il tuo codice non funzionerà quando 'arr = null'. – Bergi

risposta

2

e 'frustrante non si possono testare per arr [d1] [d2] verso l'alto. Ma da quello che ho capito, javascript non supporta gli array multidimentali.

Quindi l'unica possibilità che hai è ciò che sugested con

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

o avvolto in una funzione, se si utilizza regolarmente.

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

Questo lo restituirà in un assegno utilizzando try/catch.

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

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

Utilizzo Esempio:

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)); 
Problemi correlati