Bis*_*opZ 19 javascript underscore.js
我看过这个Stack问题,"使用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" } ]
Run Code Online (Sandbox Code Playgroud)
我会做:
_.uniq(_.map(people, function(p){ return p.age; }));
> [20, 31]
Run Code Online (Sandbox Code Playgroud)
但它只返回映射值,而不返回原始对象.
任何帮助赞赏.我使用下划线版本1.1.7
小智 22
我有同样的问题.这是因为_.uniq()返回一个新的简化数组,因此你必须将它赋予变量.因此,通过这一点修正,它必须起作用.
var people = [{name:'John',年龄:20},{name:'Mary',年龄:31},{name:'Kevin',年龄:20}];
people = _.uniq(people,false,function(p){return p.age;});
[{年龄:20,姓名:"John"},{年龄:31,姓名:"Mary"}]
| 归档时间: |
|
| 查看次数: |
23945 次 |
| 最近记录: |