2012-07-04 2 views
6

을 정의되지 여부를 확인하는 것은보다 (모든 사이즈에 정의되지 않은 오류를 피할 수) 다차원 배열이 정의되어 있는지 여부를 확인하는 청소기/짧은 방법이 : 수행으로자바 스크립트 다차원 배열이

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

은 다음과 arr 또는 arr[d1] 하나가 정의되지 않은 경우 오류가 발생합니다 : 그것은 실망

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

'경우 (도착 && 도착 [D1] && 도착 [D1] [D2]) {...}' - 배열은 결코 거짓이 아니므로 이것이 작동합니다. –

+0

'arr = null'일 때 코드가 작동하지 않습니다. – Bergi

답변

2

당신은 [D2] 똑바로 편곡 [D1]에 대해 테스트 할 수 없습니다. 하지만 내가 수집 한 것부터 javascript는 다차원 배열을 지원하지 않습니다.

그래서 당신이 가지고있는 유일한 옵션은

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

와 sugested 아니면 정기적으로 사용하는 경우 함수에 싸여 것입니다.

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

이렇게하면 try/catch를 사용하여 한 번에 확인합니다.

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

데모 :http://jsfiddle.net/r5JtQ/

사용 예 :

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)); 
관련 문제