【发布时间】:2014-07-18 15:20:38
【问题描述】:
我看过这个 Stack 问题,"Removing duplicate objects with Underscore for Javascript",这正是我想要做的,但没有一个例子有效。事实上,我无法让任何迭代器函数与 _.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" } ]
我愿意:
_.uniq(_.map(people, function(p){ return p.age; }));
> [20, 31]
但它只返回映射的值,而不是原始对象。
任何帮助表示赞赏。我使用的是下划线版本 1.1.7
【问题讨论】:
-
您展示的示例对我来说效果很好(当我在下划线页面的控制台中尝试它们时) - 以及 this fiddle 也是如此。顺便说一句,1.1.7 已经很老了;不是这个原因吗?