【问题标题】:How to find access element in 2D array in AngularJS如何在AngularJS的二维数组中找到访问元素
【发布时间】:2016-06-24 03:38:26
【问题描述】:

我正在开发 MEAN Stack Web 应用程序。我正在尝试在我的一个模型中使用二维数组。这是特定字段的架构:

alerts:  [{ name: String, time: Number}]

现在我正尝试在我的 UI 应用程序中访问它。这是我访问和保存数据的方法。

             if ($scope.task.NewUserAssigned){
                    if($scope.task.alerts.indexOf({name: "NewUserAssigned"}) == -1)
                        $scope.task.alerts.push({name: "NewUserAssigned", time: $scope.task.NewUserAssignedtime});
                        console.log("Checked:  NewUserAssigned");
               }}

但是我在下面的语法中做错了

 if($scope.task.alerts.indexOf({name: "NewUserAssigned"}) == -1)

这就是为什么我无法搜索特定索引的原因。此代码将我的数据保存在数据库中。 现在如何访问数组中的元素?

【问题讨论】:

    标签: javascript angularjs mongoose mean-stack


    【解决方案1】:

    这是一个常见的JS问题。

    Array.indexOf 不像查询那样工作。您必须查找特定值。不仅如此,对象也很棘手。仅当对象确实相同(相同的引用)时,带有对象的 indexOf 才会起作用。

    所以你可以使用类似的东西:

    var index = $scope.task.alerts.map(function(alert){
      return alert.name;
    }).indexOf('NewUserAssigned');
    
    if(index === -1){
     ....
    }
    

    或者只是一个循环:

    var index = -1;
    
    for(var i = 0, alertsLen = $scope.task.alerts; i < alertsLen; i++){
      var alter = $scope.task.alerts[i];
    
      if(alert.name === 'NewUserAssigned'){
        index = i;
        break;
      }
    } 
    
    if(index === -1){
      ....
    }
    

    【讨论】:

      【解决方案2】:

      不幸的是 - indexOf 不适用于对象数组(这是你所拥有的,不是二维数组) - 你必须循环并找到对象:

      for (var i = 0; i < $scope.task.alerts.length; i++) {
          if ($scope.task.alerts[i].name == "NewUserAssigned") {
              //Found object at index: i, do something
          }
      }
      

      【讨论】:

      • 对 indexOf 的解释并不完全准确,因为它在引用相同时起作用
      【解决方案3】:

      indexOf 函数通过引用搜索对象,这就是您的代码无法按预期工作的原因。

      对于使用给定谓词搜索数组下划线js find 函数很有用。

      【讨论】:

        猜你喜欢
        • 2011-10-24
        • 2019-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-18
        • 1970-01-01
        相关资源
        最近更新 更多