2015-07-23 19 views
8

Attualmente sto utilizzando la funzione Lodash _.filter() per filtrare gli oggetti che soddisfano una condizione specifica in base alla ricerca dell'utente, che potrebbe essere un indirizzo, una città o paese.La funzione filtro Lodash deve soddisfare solo una condizione

Ho estratto la stringa di ricerca e voglio filtrarla rispetto a diversi valori all'interno di ogni oggetto e devo restituire l'oggetto se la stringa è trovata in una di quelle chiavi.

Per spiegare voglio utilizzare l'esempio dal sito web.

var users = [ 
    { 'user': 'barney', 'age': 36, 'active': true }, 
    { 'user': 'fred', 'age': 40, 'active': false }, 
    { 'user': 'pebbles', 'age': 1, 'active': true } 
]; 

// using the `_.matches` callback shorthand 
_.result(_.find(users, { 'age': 1, 'active': true }), 'user'); 

In questo esempio, come faccio a filtrare gli utenti che hanno 36 anni o sono attivi?

Secondo la documentazione sembra che siano soddisfatte entrambe le condizioni, come nell'esempio sopra riportato per l'oggetto da restituire.

risposta

29

È possibile passare una funzione per _.filter:

_.filter(users, function(user) { 
    return user.age === 36 || user.active; 
}); 

ed è possibile utilizzare la stessa tecnica con _.find:

_.result(_.find(users, function(user) { 
    return user.age === 36 || user.active; 
}), 'user'); 
Problemi correlati