这是我的数据:
[
{
url: 'www.example.com/hello',
id: "22"
},
{
url: 'www.example.com/hello',
id: "22"
},
{
url: 'www.example.com/hello-how-are-you',
id: "23"
},
{
url: 'www.example.com/i-like-cats',
id: "24"
},
{
url: 'www.example.com/i-like-pie',
id: "25"
}
]
使用Lodash,如何删除具有重复id键的对象?
有过滤器,地图和唯一的东西,但不太确定。
我的真实数据集要大得多,有更多的键,但概念应该是相同的。
使用lodash版本4+,你可以通过特定的属性或整个对象删除重复的对象,就像这样:
var users = [
{id:1,name:'ted'},
{id:1,name:'ted'},
{id:1,name:'bob'},
{id:3,name:'sara'}
];
var uniqueUsersByID = _.uniqBy(users,'id'); //removed if had duplicate id
var uniqueUsers = _.uniqWith(users, _.isEqual);//removed complete duplicates
来源:https://www.codegrepper.com/?search_term=Lodash +删除+副本+ +数组
你可以使用lodash方法_。uniqWith,它在lodash 4.17.2的当前版本中可用。
例子:
var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
_.uniqWith(objects, _.isEqual);
// => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
更多信息:
https://lodash.com/docs/#uniqWith
_。unique不再适用于当前版本的Lodash,因为4.0.0版本有这个突破性的变化。_的功能。Unique被分割成_。uniq, _。sortedUniq, _。sortedUniqBy和_.uniqBy。
你可以用_。uniqBy是这样的:
_.uniqBy(data, function (e) {
return e.id;
});
...或者像这样:
_.uniqBy(data, 'id');
文档:https://lodash.com/docs uniqBy
对于旧版本的Lodash (< 4.0.0):
假设数据应该由每个对象的id属性唯一,并且你的数据存储在数据变量中,你可以像这样使用_.unique()函数:
_.unique(data, function (e) {
return e.id;
});
或者简单地像这样:
_.uniq(data, 'id');
在低于4的LODASH版本中,您会发现大多数此函数都不是以相同的方式实现的。和版本4相反_。Uniq被修改了。我个人有一个项目处于几个月的过渡阶段(从V3 ->到V4)。
如果你在相同的情况下运行,你有很多函数需要更新。你可以分阶段进行,当你完成过渡后,你可以稍后来修复它。这是我用来避免平台停机的技巧:
/* LODASH Version 3 & 4 Compatibility Mode */
if ((_.VERSION).charAt(0) <= 3){ //Detect LODASH version 3 or 4.
//V3 or lower
_.uniq(data, true, 'id');
} else {
//V4 or Higher
_.uniqBy(data, 'id');
}
如果你看lodash文档大多数情况下
可以找到_的迁移。可以执行版本低于4的Uniq
具有两种功能:
_。uniqBy(data, 'id')或
_。“id”unionBy(数据)
两者都会带来相同的结果。我个人一直在猜测
任选其一。最后我选了这个:_。“id”uniqBy(数据)。