[英]Check for existence of key in multidimensional array in javascript
希望是一个简单的问题。
为什么要检查多维数组中是否存在键:
a = new Array(Array());
a[0][0]='1';
a[0][1]='2';
if(a[1][2] == undefined){
alert("sorry, that key doesn't exist");
} else {alert('good, your key exists');
}
一般情况下似乎不起作用,但是当我检查由a[0][x]
'定义'的第一个索引(在这种情况下,'0')时它起作用。 例如,当我要求a[0][2]
(未定义)时,它显示第一个警报。 但是,当我要求a[1][0]
,我得到:
“未捕获的类型错误:无法读取未定义的属性‘0’”
我怎么解决这个问题?
谢谢
首先检查第一个维度是否存在,然后检查第二个维度中的键是否存在
逻辑将返回false
如果第一个测试返回false
,并测试只有第一个是第二维true
。
if(a[1] == undefined && a[1][2] == undefined)
通过前三个分配,您的数组实际上如下所示:
a = [['1','2']]
读取a[0][2]
只会返回undefined
因为a[0]
存在但它的属性'0'
没有定义。
但是尝试读取a[1][0]
会引发TypeError因为a[1]
已经undefined
并且不是对象,因此没有任何属性。 这也是您的错误消息所说的:
无法读取未定义的属性“0”。
您可以通过首先检查a[1]
然后使用typeof
运算符检查a[1][0]
来解决此问题:
if (typeof a[1] !== 'undefined' && typeof a[1][0] !== 'undefined')
a = Array(Array())
没有定义多维数组。 它只是定义了一个包含一项的数组,而该数组恰好是另一个(空)数组。 javascript 中没有内置的多维数组,因此您必须更加手动地处理事情。
您只需要进一步限定条件。 由于数组的 [1] 索引未定义,您无法测试其中的值。
if(a[1] === undefined || a[1][2] === undefined)
var a = Array(Array());
a[0][0]='1';
a[0][1]='2';
if(a[1] === undefined || a[1][2] === undefined) {
alert("sorry, that key doesn't exist");
} else {
alert('good, your key exists');
}
在支持的平台上,我们可以这样做:
if(a[3]?.[3]){
// Do something
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.