数组去重

数组去重,一般都是在面试的时候才会碰到,一般是要求手写数组去重方法的代码。如果是被提问到,数组去重的方法有哪些?你能答出其中的 10 种,面试官很有可能对你刮目相看。
在真实的项目中碰到的数组去重,一般都是后台去处理,很少让前端处理数组去重。虽然日常项目用到的概率比较低,但还是需要了解一下,以防面试的时候可能回被问到。
注:写的匆忙,加上这几天有点忙,还没有非常认真核对过,不过思路是没有问题,可能一些小细节出错而已。

一、利用 ES6 Set 去重(ES6 中最常用)

不考虑兼容性,这种去重的方法代码最少。这种方法还无法去掉 {} 空对象,后面的高阶方法会添加去掉重复 {} 的方法。

二、利用 for 嵌套 for,然后 splice 去重(ES5 中最常用)

双层循环,外层循环元素,内层循环时比较值。值相同时,则删去这个值。
想快速学习更多常用的 ES6 语法,可以看我之前的文章《学习ES6笔记──工作中常用到的ES6语法》

三、利用 indexOf 去重

新建一个空的结果数组,for 循环原数组,判断结果数组是否存在当前元素,如果有相同的值则跳过,不相同则 push 进数组。

四、利用 sort()

利用 sort() 排序方法,然后根据排序后的结果进行遍历及相邻元素比对。

五、利用对象的属性不能相同的特点进行去重(这种数组去重的方法有问题,不建议用,有待改进)

六、利用 includes

七、利用 hasOwnProperty

利用 hasOwnProperty 判断是否存在对象属性

八、利用 filter

九、利用递归去重

十、利用 Map 数据结构去重

创建一个空 Map 数据结构,遍历需要去重的数组,把数组的每一个元素作为 key 存到 Map 中。由于 Map 中不会出现相同的 key 值,所以最终得到的就是去重后的结果。

十一、利用 reduce+includes

十二、[...new Set(arr)]

PS:有些文章提到了 foreach + indexOf 数组去重的方法,个人觉得都是大同小异,所以没有写上去。
Loading...
目录
文章列表
王小扬博客
产品
Think
Git
软件开发
计算机网络
CI
DB
设计
缓存
Docker
Node
操作系统
Java
大前端
Nestjs
其他
PHP