2016-03-27 17 views
0

Ich habe eine Reihe von Objekten. das Objekt enthält:
code
name.

Filter Array von einem anderen Array (AngularJS)

Beispiel:

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

ich ein anderes Array mit nur Code haben, wie:

var filterBy = [10, 50] 

I 2 neues Array erstellen möchten:
Erste - enthält nur Objekte, dass ihr Code in "filterBy"
Sekunde - enthält nur Objekte, deren Code nicht (!) in "filterBy"

wie kann ich es tun?

Danke

Antwort

2

in eine Funktion übergeben So wie der Filterausdruck

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

und dann

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

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

+0

wow! perfekte und elegante Lösung ...! Vielen Dank! –

0

Sie Creat können e 2 Arrays wie folgt -

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); 
}; 
Verwandte Themen