ES6 之Set集合

集合:集合是由一组无序且唯一的项组成的。
集合的特点:key 和value的个数相同,没有重复的value。类似于数组 但是成员的值都是唯一的,没有重复的值
创建一个set:

const s = new Set([1,2,3]);
console.log(s);

在这里插入图片描述
1.set用于存放不重复的数据

const s1 = new Set([1,2,3,4,5,6,7,8,9,1,23,4,5,6])
		console.log(s1)

在这里插入图片描述
Set类的方法(原型方法)
add(value) :添加一个数组 返回set结构本身,set结构本身会为value添加索引

const s1 = new Set();
		s1.add(1)
		s1.add(2)
		s1.add(3)
		s1.add(1)   //无效的
		console.log(s1)
		// Object.is()   +0 和 -0 set是认为相等的
		s1.add(+0);
		s1.add(-0);
		console.log(s1)

在这里插入图片描述
delete(value):删除一个数据 删除成功返回true 否则返回false

console.log(s1.has(1))//true
		console.log(s1.has(10))//false

has(value):判断集合中是否有该值 如果有就会返回true 否则返回false。

console.log(s1.has(1))//true
console.log(s1.has(10))//false

clear() 清除集合中所有的数据

console.log(s1)

在这里插入图片描述
size属性 返回set集合的长度 只能读取,不能修改

console.log(s1.size);//3

set集合的交并补子
交集:将两个集合中共同存在的成员组成的一个新的集合
并集:将两个集合中的成员进行合并,得到一个新的集合
补集:属于一个集合而不属于另一个集合的成员组成的新的集合
子集:一个集合(A)内的所有元素等同于另一个集合(B)或者能够在另一个集合(B)里面找到该集合的所有元素,那么这个集合(A)就是集合(B)的子集
交,并,补操作

let a = new Set([1, 2, 3]);
let b = new Set([3, 5, 2]);
let a = new Set([1, 2, 3]);
let b = new Set([3, 5, 2]);

// 并集
let unionSet = new Set([...a, ...b]);
console.log("并集",unionSet)//[1,2,3,5]

// 交集
let intersectionSet = new Set([...a].filter(x => b.has(x)));
console.log("交集",intersectionSet)// [2,3]

// ab差集
let differenceABSet = new Set([...a].filter(x => !b.has(x)));
console.log("差集",differenceABSet)// [1]

子集:如何判断a是不是b的子集
假如a和b的并集没有产生新的元素,即unionSet.size == a.size || unionSet.size == b.size,那么说明a是b的子集。

//假设判断a是不是b的子集
if(unionSet.size == b.size)
    console.log('a是b的子集')     
}

遍历
1.keys():返回键名的遍历器
2.values():返回键值的遍历器
3.entries(),返回键值对的遍历器
4.clear():使用回调函数遍历每个成员

for(const item of s1){
			console.log(item)//1230
		}

set重写的实例方法 forEach

	s1.forEach((item,index,s) => {
			// index 不是下标,set集合没有下标
			// forEach中的第一个参数的值和第二个参数的值是相同的,都表示set中的每一项

			console.log(item,index,s)
		})

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值