ES6数组去重的三个简单方法

    技术2026-04-17  2

    第一种:利用Map对象和数组的filter方法 代码如下:

    let arr1 = [1, '1', 1, undefined, undefined, NaN, NaN]; function unique(arr) { const res = new Map(); return arr.filter((a) => !res.has(a) && res.set(a, 1)) } let newArr = unique(arr1); console.log(newArr);

    结果如下图: 通过打印我们发现,确实实现了我们想要的效果。那么下面简单来解释一下。

    Map对象是ES6提供的一个新的数据结构,其中has的办法是返回一个布尔值,表示某个值是否存在当前的Mp对象之中,set的办法是给Map对象设置key/value。filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

    所以说,Map对象结合filter方法可以达到数组去重的效果

    第二种:利用Set对象和数组的Array.from方法

    同样贴上相关代码片段:

    let arr1 = [1, '1', 1, 2, 3, 4, undefined, undefined, NaN, NaN]; function unique(arr) { const res = new Map(); return Array.from(new Set(arr1)); } let newArr = unique(arr1); console.log(newArr);

    结果如下图: 简单来说,第二种方法比第一种还简单。同样来简单解释一下。

    Set是ES6新提供的数据结构,类似于数组,但是本身没有重复值。Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)。

    所以set结合Array.from同样可以达到数组去重的效果。

    第三种:利用Set+扩展运算符 …

    贴上相关代码:

    let arr1 = [1, '1', 2, 3, 4, 4, 4, 4, 5, undefined, undefined, NaN, NaN]; let newArr = [...new Set(arr1)]; console.log(newArr);

    结果如下图: 这就是利用ES6新特性达到数组去重的三种办法,这三种办法有一个共同的好处就是代码简洁,对于undefined和NaN业同样可以达到去重的效果。

    Processed: 0.016, SQL: 10