按另一个数组过滤数组(AngularJS)

时间:2016-03-27 11:51:35

标签: arrays angularjs filter

我有一个对象数组。该对象包含:

名称。

示例:

var fullList = [
      {"code":10,"name":"example 10"},
      {"code":50,"name":"example 50"},
      {"code":60,"name":"example 60"}
   ]

我有另一个只包含代码的数组,如:

var filterBy = [10, 50]

我想创建2个新数组:
首先 - 仅包含其代码在“filterBy”中的对象 第二 - 仅包含其代码不是(!)在“filterBy”中的对象

我该怎么做?

谢谢

2 个答案:

答案 0 :(得分:2)

只需传入一个函数作为过滤器表达式

<div ng-repeat="a in fullList | filter: myFilterBy">
  {{ a }}
</div>

然后

$scope.myFilterBy = function(e) {
  return filterBy.indexOf(e.code) !== -1;
}

小提琴 - https://jsfiddle.net/7tda0bbL/

答案 1 :(得分:0)

您可以按如下方式创建2个数组 -

var arr1 = [];
var arr2 = [];
angular.forEach(fullList, function(obj, key) {
    var indx = filterArray(obj);
    if (indx > -1) {
      arr1.push(obj);
    } else {
      arr2.push(obj);
    }
});
console.log(arr1);
console.log(arr2);

function filterArray(arrObj) {
    return [10, 50].indexOf(arrObj.code);
};