2015-05-26 18 views
8

Tôi đang sử dụng lodash. Tôi thích nó.Lodash - Cách nhận nhiều kết quả

Tôi có một mảng người dùng mà trông như thế này:

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

Đây là cách tôi đang tìm kiếm người dùng đầu tiên và tuốt các user tài sản:

_.result(_.find(users, 'active', false), 'user'); 
// 'fred' 

Tuy nhiên, tôi muốn nhổ user và các giá trị age. Làm thế nào tôi có thể viết này?

+1

'_find (người dùng, 'hoạt động', sai)' sẽ trả về cho bạn một đối tượng, Bạn có thể sử dụng nó như 'var obj = _.find (users ', active', false); 'và sau đó nhận' obj.user' và 'obj.age' – Satpal

+1

Bạn mong đợi câu trả lời nào? Một đối tượng mới với tên người dùng và tuổi tác? – vjdhama

+2

Có, vjdhama đối tượng mới tôi muốn –

Trả lời

4

Nếu bạn chỉ muốn chọn các cột userage từ một kết quả duy nhất bạn có thể sử dụng pick() chức năng như thế này:

_.pick(_.find(users, 'active'), ['user', 'age']); 
// 'barney', 36 

Nếu bạn muốn lọc và dự án sau đó bạn có thể sử dụng where()map():

_.map(_.where(users, 'active'), _.partialRight(_.pick, ['user', 'age'])); 
// [{ name: 'barney', age: 36 }, { user: 'pebbles', age: 1 } ] 
+2

Cảm ơn câu trả lời của bạn Will Smith –

1

Nếu bạn muốn người dùng đối tượng trong mảng chứ không phải thuộc tính 'người dùng', bạn có thể lấy nó từ _.find.

_.find(users, 'active', false); 
// {'user': 'fred', 'age': 40, 'active': false} 
Các vấn đề liên quan