用三种以上的方法实现数组去重。

1,041 阅读1分钟

几种不能去掉重复的引用数据类型的写法

原数组、

let arr = [1, 1, "1", "1", null, null, undefined, undefined, /a/, /a/, NaN, NaN, {}, {}, [], []]

1.使用 Set

如果传递一个可迭代对象,它的所有元素将不重复地被添加到新的 Set中。如果不指定此参数或其值为null,则新的 Set为空。 查看Set详情

let res = [...new Set(arr)] 
   console.log(res)

2.使用filter

用于对数组进行过滤。 它创建一个新数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。 查看filter详情

let res = arr.filter((item, index) => {
    if (typeof item == "number" && isNaN(item)) {
        return isNaN(item);
    }
    return arr.indexOf(item) === index;
  });

3.使用reduce

接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值 查看reduce详情

let res = arr.reduce((pre, cur) => {
    return pre.includes(cur) ? pre : [...pre, cur]
}, [])
console.log(res)