几种不能去掉重复的引用数据类型的写法
原数组、
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)