2016-05-17 15 views
6

Tôi có biến số lodash;Bản đồ Lodash và trả về duy nhất

var usernames = _.map(data, 'usernames'); 

sản xuất như sau;

[ 
    "joebloggs", 
    "joebloggs", 
    "simongarfunkel", 
    "chrispine", 
    "billgates", 
    "billgates" 
] 

Làm cách nào tôi có thể điều chỉnh câu lệnh lodash để chỉ trả về một mảng giá trị duy nhất? ví dụ.

var username = _.map(data, 'usernames').uniq(); 
+1

bạn đã thử 'uniqBy' chưa? '_.uniqBy (dữ liệu, 'tên người dùng')' –

+0

Tôi muốn dữ liệu có thể cho phép tôi làm điều đó ... nhưng trong dịp này, tôi không thể. – MindVox

Trả lời

24

Nhiều cách, nhưng uniq() không phải là phương pháp trên mảng, đó là phương pháp lodash.

_.uniq(_.map(data, 'usernames')) 

Hoặc:

_.chain(data).map('usernames').uniq().value() 

(. Thứ hai là chưa được kiểm tra và có thể sai, nhưng nó đóng)

Như đã đề cập trong các bình luận, tùy thuộc vào những dữ liệu của bạn thực sự , bạn có thể làm điều này tất cả trong một shot mà không cần rút ra bất cứ điều gì usernames là.

+0

Cảm ơn, mặc dù tôi đã đề cập đến một cái gì đó lodash cụ thể. Tôi biết về uniq() là lodash. – MindVox

+0

@KarlBateman \t Phải, nhưng bạn đang cố gắng gọi phương thức lodash trên một mảng. Đó không phải là cách lodash hoạt động; nó không sửa đổi nguyên mẫu. –

+0

Cảm ơn, xin lỗi vâng đúng vậy. – MindVox

Các vấn đề liên quan