2016-05-17 53 views
6

我有一個lodash變量;Lodash地圖並返回唯一

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

它產生以下;

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

我怎麼能調整lodash語句,以便它只返回唯一值的數組?例如

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

你試過'uniqBy'嗎? '_.uniqBy(數據,'用戶名')' –

+0

我希望數據可以讓我這樣做......但在這種情況下,我不能。 – MindVox

回答

24

很多方法,但uniq()不是數組上的方法,它是一個lodash方法。

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

或者:

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

(第二個是未經測試,可能是錯誤的,但它很接近)作爲在評論中提到

,取決於你的數據實際上,你可以在一開始就完成這一切,而不用先掏出任何usernames

+0

謝謝,雖然我提到了特定的lodash。我知道關於uniq()的問題。 – MindVox

+0

@KarlBateman \t沒錯,但是你正試圖在數組上調用lodash方法。這不是lodash的工作方式;它不會修改原型。 –

+0

謝謝,對不起,這是正確的。 – MindVox