ES6 提供了新的数据结构 Set(集合)。它类似于数组,但成员的值都是唯一的,集合实现了 iterator 接口,所以可以使用『扩展运算符』和『for…of…』进
行遍历,集合的属性和方法:
- size 返回集合的元素个数
- add 增加一个新元素,返回当前集合
- delete 删除元素,返回 boolean 值
- has 检测集合中是否包含某个元素,返回 boolean 值
- clear 清空集合,返回 undefined
Set本质上也是一个对象。就和Date等一样,可以通过New Set()来实例化类
let s = new Set();let s2 = new Set(['大事儿','小事儿','好事儿','坏事儿','小事儿']);
new Set()接收可迭代的参数,即具备 iterator 接口的数据
- Array
- Arguments
- Set
- Map
- String
- TypedArray -概念
- NodeList

实践
let arr = [1,2,3,4,5,4,3,2,1];
//1. 数组去重
let result = [...new Set(arr)];
console.log(result);
//2. 交集
let arr2 = [4,5,6,5,6];
let result = [...new Set(arr)].filter(item => {
let s2 = new Set(arr2);// 4 5 6
if(s2.has(item)){
return true;
}else{
return false;
}
});
let result = [...new Set(arr)].filter(item => new Set(arr2).has(item));
// console.log(result);
//3. 并集
let union = [...new Set([...arr, ...arr2])];
console.log(union);
//4. 差集,arr和arr2的差集是1,2,3 arr2和arr的差集是6
let diff = [...new Set(arr)].filter(item => !(new Set(arr2).has(item)));
console.log(diff);
