我有一个2D数组。 我目前使用符号来访问该数组,例如:
myArray[5][9]
(例如)。
检查某个数组元素是否存在的最安全的方法是什么? 例如,假设我循环遍历数组并检索每个数组元素的属性,如下所示:
myArray[5][9].firstName
然后我来到myArray[9][11].firstName
(例如),它不存在。显然,由于元素不存在,这将引发异常。
我该如何处理?我没有循环遍历整个数组(我随机访问它的内容并说在for循环中使用myArray.length
将不起作用。
是否有用于检查数组元素是否存在的JS函数/方法?
感谢。
答案 0 :(得分:2)
只需使用if
条件进行检查。
if(myArray[i][j].firstName){
}
答案 1 :(得分:1)
像
if (!('firstname' in myArray[i][j])) { ... }
答案 2 :(得分:1)
您可以使用hasOwnProperty
方法检查数组项是否存在:
if (myArray.hasOwnProperty(x) && myArray[x].hasOwnProperty(y)) {
var name = myArray[x][y].firstName;
}
这会检查两个尺寸。如果您知道第一个索引(示例中的x
)始终在范围内,则可以跳过第一个测试。
如果您还在数组中存储了其他一些值,则需要检查该项是否具有firstName
属性:
if (myArray.hasOwnProperty(x) && myArray[x].hasOwnProperty(y) && myArray[x][y].hasOwnProperty('firstName')) {
var name = myArray[x][y].firstName;
}
答案 3 :(得分:1)
Safe call operator ?.
看起来不错。 警告:很多(但不是全部)JavaScript实现都支持它。
以您的示例为例,
myArray[5][9]?.firstName
myArray?.[5]?.[9]?.firstName