2012-07-04 32 views
6

Có một trình dọn dẹp/cách ngắn hơn kiểm tra xem một mảng đa chiều là undefined (mà tránh một lỗi không xác định ở bất kỳ kích thước) hơn:Javascript - Kiểm tra liệu một mảng đa chiều là undefined

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

Như cách làm như sau sẽ ném ra một lỗi nếu một trong hai arr hoặc arr[d1] là undefined:

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

'nếu (arr && arr [d1] && arr [d1] [d2]) {..}' - Mảng không bao giờ bị lỗi, vì vậy nó hoạt động. –

+0

Mã của bạn sẽ không hoạt động khi 'arr = null'. – Bergi

Trả lời

2

Nó bực bội bạn không thể kiểm tra cho arr [d1] [d2] thẳng lên. Nhưng từ những gì tôi thu thập, javascript không hỗ trợ các mảng đa chiều.

Vì vậy, lựa chọn duy nhất bạn có là những gì bạn sugested với

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

Hoặc bọc trong một chức năng nếu bạn sử dụng nó thường xuyên.

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

Điều này sẽ trả lại trong một lần kiểm tra bằng try/catch.

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

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

Cách sử dụng Ví dụ:

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)); 
Các vấn đề liên quan