【问题标题】:Javascript - Checking whether a multidimensional array is undefinedJavascript - 检查多维数组是否未定义
【发布时间】:2012-07-05 04:21:21
【问题描述】:

有没有比检查多维数组是否未定义(避免任何维度的未定义错误)更简洁/更短的方法:

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
}

【问题讨论】:

  • if (arr && arr[d1] && arr[d1][d2]) { .. } - 数组从不虚假,所以这行得通。
  • 你的代码在arr = null时不起作用。

标签: javascript arrays multidimensional-array


【解决方案1】:

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

【讨论】:

    【解决方案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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-29
      • 2010-09-26
      • 2010-09-13
      • 2015-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多