Monday, May 20, 2024
50
rated 0 times [  57] [ 7]  / answers: 1 / hits: 28120  / 12 Years ago, tue, october 23, 2012, 12:00:00

I've looked at this Stack question, Removing duplicate objects with Underscore for Javascript and that is exactly what I am trying to do, but none of the examples work. In fact I can not get any iterator function to work with _.uniq.



_.uniq([1, 2, 1, 3, 1, 4]);
> [1, 2, 3, 4]
_.uniq([1, 2, 1, 3, 1, 4], false, function(a){ return a===4;});
> [1, 2, 3, 4]
_.uniq([1, 2, 1, 3, 1, 4], true, function(a){ return a===4;});
> [1, 2, 1, 3, 1, 4]
_.uniq([1, 2, 1, 3, 1, 4], false, function(a){ return false;});
> [1, 2, 3, 4]
_.uniq([1, 2, 1, 3, 1, 4], false, function(a){ return true;});
> [1, 2, 3, 4]

var people = [ { name: 'John', age: 20 }, { name: 'Mary', age: 31 }, { name: 'Kevin', age: 20 }];
_.uniq(people, false, function(p){ return p.age; });

> [ { age: 20, name: John },
{ age: 31, name: Mary },
{ age: 20, name: Kevin } ]


I would do:



_.uniq(_.map(people, function(p){ return p.age; }));
> [20, 31]


but it returns only the mapped value, not the original object.



Any help appreciated. I am using underscore version 1.1.7


More From » underscore.js

 Answers
5

Looks like comparison functions for _.uniq were introduced in 1.2.0



from the changelog:




_.uniq can now be passed an optional iterator, to determine by what criteria an object should be considered unique.



[#82394] Monday, October 22, 2012, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
jacklynr

Total Points: 542
Total Questions: 120
Total Answers: 95

Location: Cape Verde
Member since Fri, Nov 27, 2020
4 Years ago
;