检查数组元素是否存在的安全方法?
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
我有一个二维数组。 我目前使用以下符号访问该数组:
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