是否有更清晰/更短的方法来检查多维数组是否未定义(这避免了任何维度上的未定义错误):
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
}
答案 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
}