2015-07-23 34 views
8

Tôi hiện đang sử dụng chức năng Lodash _.filter() để lọc các đối tượng đáp ứng điều kiện cụ thể dựa trên tìm kiếm của người dùng, có thể là địa chỉ đường phố, thị trấn hoặc quốc gia.Chức năng Lodash _.filter chỉ đáp ứng MỘT điều kiện

Tôi đã trích xuất chuỗi tìm kiếm và muốn lọc điều này dựa vào nhiều giá trị trong mỗi đối tượng và phải trả về đối tượng nếu chuỗi được tìm thấy trong bất kỳ khóa nào trong số đó.

Để giải thích tôi muốn sử dụng ví dụ từ trang 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'); 

Trong ví dụ này, làm cách nào để lọc cho người dùng 36 tuổi HOẶC đang hoạt động?

Theo tài liệu có vẻ như cả hai điều kiện cần phải được đáp ứng, theo ví dụ trên cho đối tượng được trả về.

Trả lời

29

Bạn có thể vượt qua một chức năng để _.filter:

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

và bạn có thể sử dụng kỹ thuật tương tự với _.find:

_.result(_.find(users, function(user) { 
    return user.age === 36 || user.active; 
}), 'user'); 
Các vấn đề liên quan