lodash unique based on attribute
18,687
Solution 1
For Lodash versions 4+ use _.uniqBy()
:
var arr = [{"name":"Jen","age":31,"eyecolor":"blue","hair":"brown"},{"name":"Jen","age":32,"eyecolor":"green","hair":"blonde"},{"name":"Jules","age":31,"eyecolor":"blue","hair":"brown"},{"name":"Brian","age":40,"eyecolor":"blue","hair":"brown"}];
var unique = _.uniqBy(arr, 'name');
console.log(unique);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>
For Lodash versions under 4 use _.uniq()
:
var arr = [{"name":"Jen","age":31,"eyecolor":"blue","hair":"brown"},{"name":"Jen","age":32,"eyecolor":"green","hair":"blonde"},{"name":"Jules","age":31,"eyecolor":"blue","hair":"brown"},{"name":"Brian","age":40,"eyecolor":"blue","hair":"brown"}];
var unique = _.uniq(arr, 'name');
console.log(unique);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.js"></script>
Solution 2
If your lodash version is higher than 4.0, You should use _.uniqBy()
.
At this time, _.uniq()
does not work, it only accept one parameter, which cannot address iterated objects.
var arr = [{ "name": "Jen", "age":31, "eyecolor": "blue", "hair":"brown"},
{ "name": "Jen", "age":32, "eyecolor": "green", "hair":"blonde"},
{ "name": "Jules", "age":31, "eyecolor": "blue", "hair":"brown"},
{ "name": "Brian", "age":40, "eyecolor": "blue", "hair":"brown"}];
var result = _.uniqBy(arr, 'name');
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
Reference
https://lodash.com/docs/4.17.4#uniqBy
Related videos on Youtube
Author by
aliadly
I am a ASP.net/PHP web developer. Recently I have been involved with a Compact Framework project which explains my multiple CF related questions.
Updated on June 04, 2022Comments
-
aliadly almost 2 years
I have a array of objects such as
[{ "name": "Jen", "age":31, "eyecolor": "blue", "hair":"brown"}, { "name": "Jen", "age":32, "eyecolor": "green", "hair":"blonde"}, { "name": "Jules", "age":31, "eyecolor": "blue", "hair":"brown"}, , { "name": "Brian", "age":40, "eyecolor": "blue", "hair":"brown"}]
I need a lodash expression that will result in a array of unique objects based on one property. For example, if I used name, it would give me these three:
[{ "name": "Jen", "age":31, "eyecolor": "blue", "hair":"brown"}, { "name": "Jules", "age":31, "eyecolor": "blue", "hair":"brown"}, { "name": "Brian", "age":40, "eyecolor": "blue", "hair":"brown"}]