web-dev-qa-db-fra.com

La fonction Lodash _.filter ne doit répondre qu'à UNE condition

J'utilise actuellement la fonction Lodash _.filter () pour filtrer les objets répondant à une condition spécifique basée sur la recherche d'utilisateur, qui peut être une adresse postale, une ville ou un pays.

J'ai extrait la chaîne de recherche et je souhaite filtrer cette propriété en fonction de plusieurs valeurs de chaque objet. Je dois renvoyer l'objet si la chaîne se trouve dans l'une de ces clés.

Pour expliquer, je veux utiliser l'exemple du site.

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

Dans cet exemple, comment filtrer les utilisateurs âgés de 36 ans OR et actifs?

Selon la documentation, il semble que les deux conditions doivent être remplies, comme dans l'exemple ci-dessus pour que l'objet soit renvoyé. 

13
Marcus Christiansen

Vous pouvez passer une fonction à _.filter :

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

et vous pouvez utiliser la même technique avec _.find :

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

Fonctionne également la deuxième solution dans Vue.js

users.filter(user => {
                return user.age == 36 || user.active;
            });
0
user_ivanp