ES5:
- 声明
一个函数
,将数组传进去
,在里面新建一个数组
,循环传进来的数组
,利用indexOf
去新数组中查找是否存在,如果不存在
就往新数组中添加
当前循环的元素,最后把新数组当作函数返回值
。
ES6:
- 利用
set
集合不重复特性,先将数组转成set
集合再转回 数组, 比如:[...new Set(
要去重的数组)]
- 利用
filter
进行过滤去重,如下
const 去重后的数组 = 要去重的数组.filter( (当前元素, 当前索引, 原数组) => 当前索引 === 原数组.indexOf(当前元素) );
Filter 实现去重的原理,如图:
利用IndexOf
的特性,从左开始找,找到第一个就返回,所以如果前面有存在相同的值,那么当前索引
就不可能相等了。