2016-05-17 66 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