重学 JS | 数组去重的 7 种算法
数组相关文章:
场景:
1. 遍历数组
思路:函数内部新建一个数组,对传入的数组进行遍历。若遍历的值不在新数组中,则添加进去,否则不做处理。
2. 利用对象键值对
思路:新建一个js
对象以及一个新的数组,判断当前遍历的值是否为js
对象的键。是,表示该元素已出现过,不做处理;不是,表示该元素是第一次出现,则给js对象插入该键,同时插入新的数组。
3. 先排序,再去重
思路:借助原生的sort()
函数对数组进行排序,然后对排序后的数组进行相邻元素的去重,将去重后的元素添加到新的数组中,返回新数组。
4. 优先遍历数组
思路:利用双层循环,分别指定循环的索引i与j,j的初始值为i+1。在每层循环中,比较索引i和j的值是否相等,相等则表示数组中出现相同值,则需要更新索引i与j,再对新索引的值进行比较。循环结束后会得到一个索引值i,表示的右侧没有出现相同的值,将其push到结果数组。
5. 基于reduce()函数
思路:类似于算法2,借助一个key-value对象,在reduce()函数的循环中判断key是否重复。
6. 借助es6的Set数据结构
思路:Set数据结构,类似数组,但是它的成员都是唯一的。
7. 借助ES6的Map数据结构
思路:Map是一种基于key-value存储数据的结构,每个key只能对应唯一的value。并且Map的key会识别不同数据类型的数据,即1和"1"在Map中会作为不同的key处理。
8. 总结
至此我们总结了数组去重的7种算法。
版权声明: 本文为 InfoQ 作者【梁龙先森】的原创文章。
原文链接:【http://xie.infoq.cn/article/be3a0d53c5ba9d46f4cb044d6】。文章转载请联系作者。
评论