这是我的数据:

[
    {
        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 +删除+副本+ +数组

其他回答

或者简单地使用联合,用于简单数组。

_.union([1,2,3,3], [3,5])

// [1,2,3,5]

_。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');

你可以使用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

使用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 +删除+副本+ +数组

只需使用_.uniqBy()即可。它创建一个无重复的数组版本。

这是一个新的方法,从4.0.0版本可用。

_.uniqBy(data, 'id');

or

_.uniqBy(data, obj => obj.id);