∵脑袋空空
∴最近看了Set,了解到可以对数组去重,联想到reduce好像也可以去重,就想用reduce实现对数组的去重(其实我不咋会用redeuce,就想用用),个中不足,欢迎大家帮我指出,填填我的脑子,先行感谢。
一、简单数组去重
利用Set数据结构的特定性——数组元素唯一(插个外话,我记着说set没有key,真拿key可以拿到,就是拿到的是value;确定了一下,set没有键名!)
目的:对数组arr去重后输出一个数组
实现方法:
- new Set()
- 数组的内置方法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]