2016-03-27 5 views
0

У меня есть массив объектов. объект содержит:
Код
имя.

Фильтр-массив с помощью другого массива (AngularJS)

пример:

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

Просто передать в функцию как выражение фильтра

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

, а затем

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

Fiddle - https://jsfiddle.net/7tda0bbL/

+0

wow! идеальное и элегантное решение ...! Спасибо! –

0

Вы можете создающих e 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); 
}; 
Смежные вопросы