下划线.js,根据键值删除对象数组中的重复项
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},
];
如您所见,我删除了"鲍勃"和"汤姆",只留下 3 个不同的名字。使用下划线可以做到这一点吗?如何?
使用下划线,使用带有自定义转换的_.uniq
,像_.property('name')
这样的函数会做得很好,或者只是'name'
,正如@Gruff Bunny在评论中指出的那样:
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}));
})
相关文章:
- 将数组对象传递到struts2中的操作类
- 如何使用jquery返回php-json数组对象
- 从其名称获取javascript数组对象
- 值未与数组对象绑定
- 如何按数组/对象值的倍数过滤对象数组
- 在表中显示数组对象
- 在数组对象中分组
- 将第二个或多个数组推送到数组对象 AngularJS 中
- 重新排列 JavaScript 数组/对象
- 键上的javascript数组对象过滤器
- handontable:在不更改数据数组/对象的情况下隐藏某些列
- 用于跟踪购物车可用性的Javascript数组/对象/哈希表
- 重建有角度的java脚本数组对象
- 对JSON数组对象进行排序
- 连接与数组对象相关的文本:方式和位置
- 哪些浏览器和版本支持将常见的类数组对象直接传递到fn.apply()
- 如何使用Handlebars循环数组对象和模板
- 是否可以引用JS数组/对象中的另一个元素
- Javascript中的名称索引-数组/对象
- 数组长度不等于数组对象