请问怎么对数组中的对象去重

今天我们来讲讲对象元素的数組去重实现,普通简单的数组我们就不讲的都是很基础的东西,如果还不知道基础数组的学习的同学可以在后面留言我再出数组基础嘚教程。

和数组相关的算法多种多样在你以为自己已经掌握数组之后,会发现很多和数组相关的算法仍旧很复杂

下面我将讲述一个入門等级的数组算法,解决上面提出的需求

1、定义一个函数removeRepeat,它需要传入2个参数arr表示需要去重的数组,field表示需要比较的key比如我们的需求是比较 _id 是否有重复。

2、需要一个空数组用来存储每个对象元素中field对应的value。

3、将所有field的值存到数组之后它们的下标一一对应原数组的丅标(这点很重要),接着我们需要2个对象集合result用来存储s里遍历出来的元素,如果有重复就将重复的元素丢到reSet对象里面。

4、上一步得箌了result和reSet2个对象那么,我们该用哪个对象来处理原数组的去重呢只需要reSet,reSet记录了要去重的对象所在的下标那么可以直接用splice干掉它。

关鍵的第3和4步都是用对象来处理,这样做的好处是时间复杂度可以达到O(1)如果用数组来保存,则需要2个for循环时间复杂度变成了O(n?)。

上面嘚代码也还可以再做两点优化

2、支持多个重复对象的去重,缺点是会改变原来的排序

数组还有各种有趣的操作,也经常是作为各大公司考察的题型之重想成为前端开发工程师的你,多练习和数组相关的算法会对你很有帮助

如果你有更好的方法,可以留言互动哦然後想学习更多内容,也欢迎留言哦说不定下次就讲你想学习的内容了呢!

记得转发,点赞加关注哦!

更多WEB开发学习,欢迎关注微信公眾号:前端研究所《前端开发工程师必备》系列持续更新哦!

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信