【问题标题】:Safe way to check if array element exists?检查数组元素是否存在的安全方法?
【发布时间】:2015-02-01 14:28:36
【问题描述】:

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

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

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

myArray[5][9].firstName

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

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

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

谢谢。

【问题讨论】:

  • if (myArray[9][11] !== undefined && 'firstname' in myArray[9][11])

标签: javascript arrays multidimensional-array null elements


【解决方案1】:

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

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

myArray[5][9]?.firstName

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

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

【讨论】:

    【解决方案2】:

    喜欢

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

    【讨论】:

      【解决方案3】:

      只需使用if 条件检查即可。

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2021-10-26
          • 2015-09-02
          • 1970-01-01
          • 1970-01-01
          • 2012-02-23
          • 2010-12-30
          • 1970-01-01
          • 2021-03-12
          • 2014-12-19
          相关资源
          最近更新 更多