如何检查JS中是否设置了多维数组项?
w[1][2] = new Array;
w[1][2][1] = new Array;
w[1][2][1][1] = 10; w[1][2][1][2] = 20; w[1][2][1][4] = 30;
如何检查是否w[1][2][1][3]
设置?
解决方案if (typeof w[1][2][1][3] != 'undefined')
不起作用。
我不想使用对象而不是数组。
如何检查JS中是否设置了多维数组项?
w[1][2] = new Array;
w[1][2][1] = new Array;
w[1][2][1][1] = 10; w[1][2][1][2] = 20; w[1][2][1][4] = 30;
如何检查是否w[1][2][1][3]
设置?
解决方案if (typeof w[1][2][1][3] != 'undefined')
不起作用。
我不想使用对象而不是数组。
在检查其子元素之前,您没有检查先前的数组元素是否存在,因为如果父元素不存在,则子元素不能存在
if(
typeof(w) != 'undefined' &&
typeof(w[1]) != 'undefined' &&
typeof(w[1][2]) != 'undefined' &&
typeof(w[1][2][1]) != 'undefined' &&
typeof(w[1][2][1][3]) != 'undefined' &&
) {
//do your code here if it exists
} else {
//One of the array elements does not exist
}
if 将运行else
子句中的代码,如果它看到任何先前的元素不存在。如果前面的任何检查返回 false,它将停止检查其他检查。
这是一种更通用的方法,您可以通过扩展 的原型来做到这一点Array
:
Array.prototype.check = function() {
var arr = this, i, max_i;
for (i = 0, max_i = arguments.length; i < max_i; i++) {
arr = arr[arguments[i]];
if (arr === undefined) {
return false;
}
}
return true;
}
w.check(1, 2, 1, 4); //will be true if w[1][2][1][4] exists
或者如果您不喜欢原型扩展,您可以使用单独的函数:
function check(arr) {
var i, max_i;
for (i = 1, max_i = arguments.length; i < max_i; i++) {
arr = arr[arguments[i]];
if (arr === undefined) {
return false;
}
}
return true;
}
check(w, 1, 2, 1, 4); //will be true if w[1][2][1][4] exists