Javascript 在下划线中使用迭代器函数';s_uq.uniq

Javascript 在下划线中使用迭代器函数';s_uq.uniq,javascript,underscore.js,Javascript,Underscore.js,我已经研究了这个堆栈问题,这正是我想要做的,但没有一个示例有效。事实上,我无法使用任何迭代器函数来处理q.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;}); &

我已经研究了这个堆栈问题,这正是我想要做的,但没有一个示例有效。事实上,我无法使用任何迭代器函数来处理q.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

看起来像是在1.2.0中引入了uniq的比较函数

从:

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


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

var people=[{姓名:约翰,年龄:20},{姓名:玛丽,年龄:31},{姓名:凯文,年龄:20}]

people=uq.uniq(people,false,函数(p){返回p.age;})

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


您所展示的示例对我来说很好(当我在控制台的下划线页面上尝试它们时),并且在。顺便说一句,1.1.7已经很老了;这不是原因吗?啊!这就解释了一切。)嘿!是的,有一段时间我很困惑-很好@BishopZ提到了这个版本!