【问题标题】:Filtering out objects with certain property value in an array (Angular)过滤出数组中具有特定属性值的对象(Angular)
【发布时间】:2016-06-13 15:23:05
【问题描述】:

尝试通过Angular中的数组进行过滤,并过滤掉某个属性的所有对象

我有一个这样的数组:

[  
   {  
      "group":"Group A",
   },
   {  
      "group":"Group A",
   },
   {  
      "group":"Group B",
   },
   {  
      "group":"Group B",
   } 
   {  
      "group":"Group C",
   },
   {  
      "group":"Group C",
   } 
]

...我想编写一个函数来返回一个只有 A 组和 B 组(不是 C 组)的数组。

到目前为止,这是我所拥有的:

function filterStandings() {

        for (var i = 0, len = $scope.originalArray.length; i < len; i++) {
            $scope.filteredArr = [];
            if (originalArray[i].group !== "Group C") {
                 $scope.filteredStandingsArr.push($scope.originalArray[i]);
            }
         }
         return $scope.filteredArr;
 };

然后,当我尝试通过调用 filterStandings() 函数在视图中显示此数组时,没有任何显示。

谁能帮忙?

【问题讨论】:

  • 您在示例数组中错过了第二个 { "group":"Group B", } 之后的“,”

标签: arrays angularjs for-loop filter push


【解决方案1】:

Array.prototype.filter()

对于您的用例:

 $scope.filteredArr = $scope.originalArray.filter(function(item){
    return item.group !== 'Group C'
 });

【讨论】:

    【解决方案2】:

    试试这个:

    $scope.test = function () {
        $scope.filteredArr = [];
        for (var i = 0; i < $scope.items.length; i++) {
            if ($scope.items[i].group != "Group C") {
                 $scope.filteredArr.push($scope.items[i]);
            }
         }
         return $scope.filteredArr;
     };
    

    您错过了使用 $scope 服务并在 for 循环中初始化新数组 (filteredArr)。

    你也可以使用过滤关键字:

    JS

    $scope.filteredArr = function (item) {
           return item.group != "Group C";
    };
    

    HTML

    <div ng:repeat="item in originalArray| filter: filteredArr ">
      {{item}}
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-25
      • 2021-12-08
      • 2016-08-03
      • 1970-01-01
      • 2020-01-22
      • 1970-01-01
      • 2020-08-28
      相关资源
      最近更新 更多