整理自js中基础数据结构数组去重问题
思考?如何去除数组中重复的项
例如数组:[1,3,4,3,5]我们在做去重的时候,一开始想到的肯定是,逐个比较,外面一层循环,内层后一个与前一个一比较,如果是久不将当前这一项放进新的数组,挨个比较完之后返回一个新的去过重复的数组

上述方法效率极低,代码量还多,思考?有没有更好的方法
这时候不禁一想当然有了!!!hashtable 啊,通过对象的hash办法可以有效的去除掉重复的内容

既然数组的方法都已经如此完善了,岂不是有更好的遍历方法

最后!如果数组中重复出现的并不是简单的数据类型,每一项都是一种复杂的对象类型的数据结构该如何去重呢?
例如数组是这样的:

其实还是利用hash的思想,但是转化一下思维,比如我们可以把这个数组中的每一项当作一个对象的属性也,然后枚举这个属性

解析:上面这个方法呢利用Object.keys()这个方法枚举我们去重后的一个对象unique,这个方法返回一个属性列表数组,之后我们利用数组的map()方法遍历并且给每一项执行一个callback,map()会返回一个新的数组
网友评论