美文网首页网页前端开发学习必备教程程序员
前端开发工程师必备系列-3分钟让你搞清楚,对象元素的数组去重实现

前端开发工程师必备系列-3分钟让你搞清楚,对象元素的数组去重实现

作者: WEB开发李家靖 | 来源:发表于2018-01-25 15:25 被阅读14次

    3分钟让你搞清楚,对象元素的数组去重实现方法

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

    需求

    有这样一个数组

    实际上我们只需要

    去重

    简单数组的去重

    以对象为元素的数组去重

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

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

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

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

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

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

    5、说明

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

    完整源码

    补充

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

    1、更简洁的代码。

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

    总结

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

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

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

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

    相关文章

      网友评论

        本文标题:前端开发工程师必备系列-3分钟让你搞清楚,对象元素的数组去重实现

        本文链接:https://www.haomeiwen.com/subject/slmvaxtx.html