Set集合:是对数组的扩展
特点:存放的对象必须唯一,没有重复元素
与Map差不多,操作Set:
1.add(value):添加某个值,返回Set结构本身
2.delete(value):删除某个值,返回一个布尔值,表示删除是否成功
3.has(value):返回一个布尔值,表示该值是否为Set成员
4.clear():清除所有成员,没有返回值
5.size:返回Set成员总数
//1.创建
var set1=new Set();
//2.添加
set1.add(1);
set1.add(2);
set1.add(3);
console.log(set1.size);//3
//3.删除
set1.delete(1);
console.log(set1.size);//2
//4.判断
console.log(set1.has(1));//false 1已经被删除
//5.清空
set1.clear();
console.log(set1.size);//0
练习:数组去重,交集,差集,并集
//如何对数组快速去重,用set
var arr1=[2,1,1,3,5,8,3];
var set2=new Set(arr1);//set具有天然去重功能
console.log([...set2]);//[2,1,3,5,8]
//交集,并集,差集
let a=new Set([1,2,3]);
let b=new Set([4,3,2]);
//并集
let union=new Set([...a,...b]);
console.log(union);// 1 2 3 4
//交集
let intersect=new Set([...a].filter(function(v){
return b.has(v);
}));
console.log(intersect);//2 3
//差集
let difference=new Set([...a].filter(function(v){
return !b.has(v);
}));
console.log(difference);//1
WeakSet:与WeakMap同理,只操作对象,考虑回收问题
//WeakSet
var set=new WeakSet();
set.add(1);//报错
set.add({});