简单类型数据数组去重,使用Set、reduce;后附set转为array方法

68 阅读1分钟

∵脑袋空空
∴最近看了Set,了解到可以对数组去重,联想到reduce好像也可以去重,就想用reduce实现对数组的去重(其实我不咋会用redeuce,就想用用),个中不足,欢迎大家帮我指出,填填我的脑子,先行感谢。

一、简单数组去重

利用Set数据结构的特定性——数组元素唯一(插个外话,我记着说set没有key,真拿key可以拿到,就是拿到的是value;确定了一下,set没有键名!)
目的:对数组arr去重后输出一个数组
实现方法

  1. new Set()
  2. 数组的内置方法reduce()

1、使用new Set()对数组去重

const arr = [1, 1, 2, 3, 5, 5, 'w', 'w', 'x', 'x', 'x', 'y'];
let newArr = Array.from(new Set(arr));
console.log(newArr);

此例中使用Array.from方法将set转化为array

2、使用reduce()对数组去重

const arr = [1, 1, 2, 3, 5, 5, 'w', 'w', 'x', 'x', 'x', 'y'];
let newArr = arr.reduce((pre,cur) => {
    if(!pre.includes(cur)){
        pre.push(cur);
    }
    return pre;
},[])

二、Set——>Array

1、Array.from()

const set = new Set(['a','b',1,2]);
let arr = Array.from(set);
console.log(arr); // ['a','b',1,2]

2、使用扩展运算符(...)

const set = new Set(['a','b',1,2]);
let arr = [...set];
console.log(arr); // ['a','b',1,2]

3、使用forEach()

const set = new Set(['a','b',1,2]);
let arr = []
set.forEach((value, keys, set) => {
    arr.push(value);
})
console.log(arr); // ['a','b',1,2]