首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在下划线的_.uniq中使用迭代器函数

在下划线的_.uniq中使用迭代器函数
EN

Stack Overflow用户
提问于 2012-10-24 00:34:28
回答 2查看 27K关注 0票数 20

我已经看过这个堆栈问题,"Removing duplicate objects with Underscore for Javascript",这正是我想要做的,但是没有一个例子起作用。事实上,我不能让任何迭代器函数与_.uniq一起工作。

代码语言:javascript
复制
_.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" } ]

我会这样做:

代码语言:javascript
复制
_.uniq(_.map(people, function(p){ return p.age; }));
> [20, 31]

但它只返回映射值,而不返回原始对象。

感谢您的帮助。我使用的是下划线版本1.1.7

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-24 00:42:51

看起来_.uniq的比较函数是在1.2.0中引入的

changelog中:

_.uniq现在可以传递一个可选的迭代器,以确定应该根据什么标准将对象视为唯一的。

票数 15
EN

Stack Overflow用户

发布于 2014-07-18 15:20:39

我也有同样的问题。这是因为_.uniq() 返回一个新的精简数组,所以您必须将其赋给一个变量。因此,通过这个小小的修正,它必须起作用。

var people ={姓名:‘约翰’,年龄: 20 },{姓名:‘玛丽’,年龄: 31 },{姓名:‘凯文’,年龄: 20 };

people = _.uniq(people,false,function(p){ return p.age;});

{年龄: 20,姓名:“约翰”},{年龄: 31,姓名:“玛丽”}

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13035198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档