![](/img/trans.png)
[英]Weird result when Underscore.js, remove duplicates in array of objects based on key value
[英]Underscore.js, remove duplicates in array of objects based on key value
我有以下 JS 数组:
var myArray = [{name:"Bob",b:"text2",c:true},
{name:"Tom",b:"text2",c:true},
{name:"Adam",b:"text2",c:true},
{name:"Tom",b:"text2",c:true},
{name:"Bob",b:"text2",c:true}
];
我想消除名称值重复的索引并重新创建一个具有不同名称的新数组,例如:
var mySubArray = [{name:"Bob",b:"text2",c:true},
{name:"Tom",b:"text2",c:true},
{name:"Adam",b:"text2",c:true},
];
如您所见,我删除了“Bob”和“Tom”,只留下了 3 个不同的名字。 下划线可以做到这一点吗? 如何?
以下划线,使用_.uniq
与自定义转换,这样的函数_.property('name')
会做很好,或只是'name'
,如@Gruff兔子在评论中指出:
var mySubArray = _.uniq(myArray, 'name');
还有一个演示http://jsfiddle.net/nikoshr/02ugrbzr/
如果您使用Lodash而不是Underscore ,请使用@Jacob van Lingen 在评论中给出的示例并使用_.uniqBy :
var mySubArray = _.uniqBy(myArray, 'name')
另一个答案绝对是最好的,但如果您有兴趣学习,这里还有一个不会太长的答案,它也会让您接触更多下划线方法:
var mySubArray = []
_.each(_.uniq(_.pluck(myArray, 'name')), function(name) {
mySubArray.push(_.findWhere(myArray, {name: name}));
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.