2016-02-19 12 views
24

Ho una funzione semplice per restituire l'oggetto che soddisfa i miei criteri.lodash _.find tutte le partite

Codice assomiglia:

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

Come posso trovare tutti i risultati (non solo prima), che soddisfa questo criterio, ma tutti i risultati.

Grazie per anz consigliare.

+2

Stai cercando '_.filter'? – georg

risposta

52

Basta usare _.filter - restituisce tutti gli elementi corrispondenti.

_.filter

iterazioni sulle elementi della collezione, che ritornano un array di tutti gli elementi del predicato restituisce truthy per. Il predicato è invocato con tre argomenti: (valore, indice | chiave, raccolta).

6

È possibile utilizzare _.filter, passando tutte le vostre esigenze in questo modo:

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

Senza lodash utilizzando ES6, FYI:

esempio di base (ottiene la gente di età inferiore a 30 anni:

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

Esempio di utilizzo del codice:

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