2015-07-23 17 views
8

Obecnie używam funkcji Lodash _.filter() do filtrowania obiektów, które spełniają określony warunek oparty na wyszukiwaniu użytkowników, który może być adresem ulicy, miejscowością lub kraj.Funkcja Lodash _.filter musi spełniać tylko jeden warunek.

Wyodrębniłem ciąg wyszukiwania i chcę przefiltrować go w odniesieniu do kilku wartości w obrębie każdego obiektu i musi zwrócić obiekt, jeśli łańcuch znajduje się w dowolnym z tych kluczy.

Aby wyjaśnić, chcę skorzystać z przykładu na stronie internetowej.

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'); 

W tym przykładzie, w jaki sposób mogę filtrować dla użytkowników, którzy mają 36 lat lub są aktywni?

Zgodnie z dokumentacją wydaje się, że oba warunki muszą zostać spełnione, zgodnie z powyższym przykładem dla zwracanego obiektu.

Odpowiedz

29

można przekazać funkcję _.filter:

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

i można użyć tej samej techniki z _.find:

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