JS-数组去重
2021-04-13 11:11 作者:hey_just_do_it | 我要投稿
数组去重
一、双for循环方式

splice引起的数组塌陷问题
在删除重复项后,后面每一项的索引都会向前提一位,这样(如果删除的这一项后面还有1000万项,那么这1000万项的索引都要向前提一位),这样会大大的消耗性能。
解决:我们用最后一项替换删除项,再删除最后一项(下一轮循环还要从当前项开始),这样就不会导致索引前置,从而达到优化性能的目的。
二、对象键值对的方式

优点:
只有一个循环,所以性能很好
缺点:
1.如果数组中出现对象则会存在问题,因为对象的属性名不能是对象,遇到会转换为字符串;
2.如果数组中存在数字10和字符串'10',则也会认为是重复的,因为对象中的属性名是数字和字符串没有区别的;
3.数组中的值如果是undefined可能也会出现问题....
三、indexOf

缺点
indexOf低版本浏览器不兼容
四、ES6新特性:Set方式
Set数据结构会自动去重

缺点
低版本浏览器不兼容