数组去重
2018-12-10 本文已影响0人
好奇的猫猫猫
整理自js中基础数据结构数组去重问题
思考?如何去除数组中重复的项
例如数组:[1,3,4,3,5]我们在做去重的时候,一开始想到的肯定是,逐个比较,外面一层循环,内层后一个与前一个一比较,如果是久不将当前这一项放进新的数组,挨个比较完之后返回一个新的去过重复的数组
![](https://img.haomeiwen.com/i9874301/2b55d5742840bdb2.png)
上述方法效率极低,代码量还多,思考?有没有更好的方法
这时候不禁一想当然有了!!!hashtable 啊,通过对象的hash办法可以有效的去除掉重复的内容
![](https://img.haomeiwen.com/i9874301/4ec5a481750fc063.png)
既然数组的方法都已经如此完善了,岂不是有更好的遍历方法
![](https://img.haomeiwen.com/i9874301/fd51aee37f3a57d7.png)
最后!如果数组中重复出现的并不是简单的数据类型,每一项都是一种复杂的对象类型的数据结构该如何去重呢?
例如数组是这样的:
![](https://img.haomeiwen.com/i9874301/6c12f9d15d4ca50f.png)
其实还是利用hash的思想,但是转化一下思维,比如我们可以把这个数组中的每一项当作一个对象的属性也,然后枚举这个属性
![](https://img.haomeiwen.com/i9874301/a8ea77b5487551e5.png)
解析:上面这个方法呢利用Object.keys()这个方法枚举我们去重后的一个对象unique,这个方法返回一个属性列表数组,之后我们利用数组的map()方法遍历并且给每一项执行一个callback,map()会返回一个新的数组