2016-02-19 3 views
24

Ich habe eine einfache Funktion, um mir ein Objekt zurückzugeben, das meine Kriterien erfüllt.lodash _.find alle Übereinstimmungen

-Code wie folgt aussieht:

var res = _.find($state.get(), function(i) { 
     var match = i.name.match(re); 
     return match && 
      (!i.restrict || i.restrict($rootScope.user)); 
    }); 

Wie kann ich alle Ergebnisse (nicht nur am Anfang) finden, die diese Kriterien erfüllen aber alle Ergebnisse.

Danke für anz beraten.

+2

Suchen Sie nach '_.filter'? – georg

Antwort

52

Verwenden Sie einfach _.filter - es gibt alle übereinstimmenden Elemente zurück.

_.filter

Durchläuft Elemente der Kollektion, eine Anordnung aller Elemente prädizieren truthy kehrt zum Rückführen. Das Prädikat wird mit drei Argumenten aufgerufen: (value, index | key, collection).

6

können Sie verwenden _.filter, wie so in alle Ihre Anforderungen vorbei:

var res = _.filter($state.get(), function(i) { 
     var match = i.name.match(re); 
     return match && 
      (!i.restrict || i.restrict($rootScope.user)); 
    }); 

Link to documentation

3

Ohne lodash ES6 Verwendung FYI:

Basic-Beispiel (bekommt Menschen wessen Alter weniger als 30 ist):

const peopleYoungerThan30 = personArray.filter(person => person.age < 30) 

Beispiel mit Ihrem Code:

$state.get().filter(i => { 
    var match = i.name.match(re); 
    return match && 
      (!i.restrict || i.restrict($rootScope.user)); 
})