Lodash从数组中删除重复项

2020/10/11 00:41 · javascript ·  · 0评论

这是我的数据:

[
    {
        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键的对象?带有过滤器,地图和独特内容的东西,但不太确定。

我的真实数据集更大,并且具有更多的键,但是概念应该相同。

_.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属性均应唯一化数据,并且数据存储在data变量中,则可以使用如下_.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

或简单地使用union,以获得简单的数组。

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

// [1,2,3,5]

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

这是一种新方法,从4.0.0版本开始可用。

_.uniqBy(data, 'id');

要么

_.uniqBy(data, obj => obj.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+remove+duplicates+from+array

对于简单数组,您可以使用并集方法,但也可以使用:

_.uniq([2, 1, 2]);

您还可以对4.0.0及更高版本使用unionBy,如下所示:let uniques = _.unionBy(data,'id')

本文地址:http://javascript.askforanswer.com/lodashcongshuzuzhongshanchuzhongfuxiang.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!