检查数组元素是否存在的安全方法?

Safe way to check if array element exists?

我有一个二维数组。 我目前使用以下符号访问该数组:

myArray[5][9](例如)。

检查某个数组元素是否存在的最安全的方法是什么? 例如,假设我正在遍历数组并检索每个数组元素的 属性,如下所示:

myArray[5][9].firstName

然后我来到 myArray[9][11].firstName(例如),它不存在。显然,这将引发异常,因为该元素不存在。

我该如何处理?我没有遍历整个数组(我随机访问它的内容并说在 for 循环中使用 myArray.length 将不起作用。

有没有检查数组元素是否存在的JS函数/方法?

谢谢。

根据if条件检查即可。

if(myArray[i][j].firstName){
}

喜欢

if (!('firstname' in myArray[i][j])) { ... }

您可以使用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;
}

Safe call operator ?. 看起来不错。 警告:JavaScript的许多但并非所有实现(和版本)都支持它。

对于您的示例,它看起来像

myArray[5][9]?.firstName

编辑:感谢Asaf 有更安全的版本

myArray?.[5]?.[9]?.firstName