web-dev-qa-db-ja.com

Lodash _.filter関数は1つの条件を満たす必要があります

現在、Lodash _。filter()関数を使用して、ユーザー検索に基づいて特定の条件を満たすオブジェクトをフィルタリングしています。これは、住所、町、または国のいずれかです。

検索文字列を抽出し、各オブジェクト内の複数の値に対してこれをフィルター処理し、文字列がこれらのキーのいずれかで見つかった場合はオブジェクトを返す必要があります。

説明するために、私はウェブサイトから例を使用したいと思います。

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

この例では、36歳ORがアクティブなユーザーのいずれかをフィルタリングするにはどうすればよいですか?

ドキュメントによると、返されるオブジェクトの上記の例のように、両方の条件を満たしている必要があるようです。

17

関数を _.filter に渡すことができます。

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

_.find で同じテクニックを使用できます:

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

Vue.jsの2番目のソリューションでも動作します

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