过滤掉数组中具有特定属性值的对象(Angular)

时间:2016-06-13 15:23:05

标签: arrays angularjs for-loop filter push

尝试在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()函数在我的视图中显示此数组时,没有任何显示。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

Array.prototype.filter()

对于您的用例:

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

答案 1 :(得分:0)

试试这个:

$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>