Javascript - 检查多维数组是否未定义

时间:2012-07-04 16:44:11

标签: javascript arrays multidimensional-array

是否有更清晰/更短的方法来检查多维数组是否未定义(这避免了任何维度上的未定义错误):

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

如果未定义arrarr[d1],则执行以下操作会引发错误:

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

2 个答案:

答案 0 :(得分:3)

这将使用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));

答案 1 :(得分:2)

令人沮丧的是你无法直接测试arr [d1] [d2]。但是从我收集的内容来看,javascript不支持多维数组
所以你唯一的选择就是你用

吸吮的东西
if(arr != undefined && arr[d1] != undefined && arr[d1][d2] != undefined){
    // arr[d1][d2] isn't undefined
}

如果您经常使用它,请将其包裹在函数中。

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
}