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

Ale*_*lex 6 javascript arrays multidimensional-array

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

if(arr != undefined && arr[d1] != undefined && arr[d1][d2] != undefined){
    // arr[d1][d2] isn't undefined
}
Run Code Online (Sandbox Code Playgroud)

如果执行以下操作将导致错误,如果其中一个arrarr[d1]未定义:

if(arr[d1][d2] != undefined){
    // arr[d1][d2] isn't undefined
}
Run Code Online (Sandbox Code Playgroud)

Bra*_*age 2

令人沮丧的是您无法直接测试 arr[d1][d2] 。但据我所知,javascript 不支持多维数组。

所以你唯一的选择就是你所建议的

if(arr != undefined && arr[d1] != undefined && arr[d1][d2] != undefined){
    // arr[d1][d2] isn't undefined
}
Run Code Online (Sandbox Code Playgroud)

或者如果您经常使用它,则将其包装在函数中。

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
}
Run Code Online (Sandbox Code Playgroud)