Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Lodash map and return unique

I have a lodash variable;

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

which produces the following;

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

How could I adjust the lodash statement so that it only returns an array of unique values? e.g.

var username = _.map(data, 'usernames').uniq();
like image 200
stackunderflow Avatar asked May 17 '16 12:05

stackunderflow


2 Answers

Many ways, but uniq() isn't a method on array, it's a lodash method.

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

Or:

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

(The second is untested and possibly wrong, but it's close.)

As mentioned in the comment, depending on what your data actually is, you could do this all in one shot without first pulling out whatever usernames is.

like image 52
Dave Newton Avatar answered Oct 23 '22 05:10

Dave Newton


You can also use uniqBy function which also accepts iteratee invoked for each element in the array. It accepts two arguments as below, where id is the iteratee parameter.

_.uniqBy(array, 'id')
like image 43
Ali Tourani Avatar answered Oct 23 '22 05:10

Ali Tourani