Set 对象允许你'存储任何类型的唯一值',无论是原始值或者是对象引用。
创建Set对象
{
let mySet = new Set();
//add()方法,向Set对象中添加内容
mySet.add(1); //可以是数字
mySet.add('字符串'); //可以是字符串
mySet.add(false); //可以是布尔值
mySet.add([1,2]); //可以是数组
}
Set对象的唯一性
{
let myset = new Set();
myset.add(1);
myset.add(2);
myset.add(2);
myset.add(3);
console.log(myset);
// 输出结果为1,2,3
}
对象之间引用不同不恒等,即使值相同,Set 也能存储
{
let s1 = new Set();
let obj = {id:'100',name:'san'};
s1.add(obj);
s1.add({id:'100',name:'san'});
console.log(s1);
}
Set对象的迭代,遍历
{
let s1 = new set();
s1.add([1,2,3,4,5]);
// for...of方法
for(let item of s1){
console.log(item)
}
// forEach()方法
s1.forEach(function(v,k){
console.log(v,'--',k)
})
}
类型转换
{
//数组转Set对象(直接往Set对象里面扔)
let arr = [1,2,3,4];
let Set = new Set(arr);
console.log(Set);
//Set对象转数组(用...操作符,也叫剩余运算符);
let newarr = [...Set];
}
{
//String转Set
let str = 'hello yi';
let set = new Set(str);
console.log(set);
}
Set对象作用
数组去重
//先把数组放进Set对象中,在把Set对象转为数组
{
let myset = new Set([1,1,1,2,2,4,5,6,6,4]);
let myArr = [...myset];
consloe.log(myset)
}
并集
{
//把两个Set对象合并成一个对象(注意:并集时会自动去重)
let s1 = new Set([1,2,3,4,5]);
let s2 = new Set([2,3,5,6,7]);
let s3 = new Set([...s1,...s2]);
console.log(s3);
}
交集 (两个Set对象中是否有相同的内容,把相同的内容 “拎”出来,存放在一个新Set对象中)
{
let s1 = new Set([1,2,3,4,5]);
let s2 = new Set([2,3,4,5,6]);
let s = new Set([...s1].filter(x => {return s2.has(x)}));
console.log(s);
}
差集 (两个Set对象中, 取 “我” 里面 “你” 没有的内容 )
// !b.has(x) 注意 !是取反
{
let s1 = new Set([1,2,3,5]);
let s2 = new Set([2,3,4]);
let s = new Set([...s1].filter(x => {return !s2.has(x)}));
console.log(s);
}
{
let s1 = new Set([1,2,3,4,5]);
//检测set对象中的成员是否存在
//has()方法--检查set对象中是否存在某个元素
// 如果有则返回true,没有则返回flase
console.log(s1.has(3));
// 也可以用if语句判断
if(s1.has(2)){
console.log('存在')
}else{
console.log('不存在')
}
// size方法,查询Set对象中元素的个数
consloe.log(s1.size);
//delete() 方法,删除Set对象中的某一个元素
// 如果删除成功则返回true,失败则返回flase
console.log(s1.delete(2));
// clear()方法,清空Set对象
s1.clear();
console.log(s1);
}