ES6之Set与weakSet

一,新增的数据结构 Set

1.es6新增了数据类型集合(Set),集合成员的值都是唯一的,没有重复的值。Set实例的size属性返回元素个数。

2.Set是一个构造函数,可接受数组,或任意有interator接口的数据类型作为参数,返回一个Set 数据结构。

{
	let s = new Set([1,2,3,4,1,1,1])
	console.log(s) // {1,2,3,4}
	
	function myAdd(x,y)
	{
		let s = new Set(arguments) //类数组arguments具有interator接口
		return s
	}
	myAdd(1,2) // {1,2}
}

二,Set实例API

1.add(item)Set里添加元素。注意,Set 加入值的时候,不会发生类型转换,所以1和"1"是两个不同的值。

{
	let s = new Set();
	s.add(1);
	s.add('1');
	s.add();
	console.log(s) // {1, "1", undefined}
}

2.delete(item)删除一个元素,返回一个布尔值,表示是否删除成功。

{
	let s = new Set([1,2,3,4]);
	s.delete(1); // true
	s.delete(5); // false
	console.log(s) // {2,3,4}
}

3.has(item) 判断是否含有某个元素,返回一个布尔值。

{
	let s = new Set([1,2,3,4]); 
	s.has(1) // true
}

4.clear()清除所有成员,没有返回值。

{
	let s = new Set([1,2,3,4]); 
	s.clear() 
	console.log(s) // {}
}

三,Set遍历

1.Set构造函数的原型上内置了keys(),values(),和entries(),其次还可以用forEach()完成遍历,因为集合没有键的概念,所以keys()values()的行为一致,返回一个遍历器对象,包含元素中所有值。

{
	let s = new Set([1,2,3,4])
	for (let v of s.keys())
	{
		console.log(v) // 1 2 3 4
	}
	for (let v of s.entries())
	{
		console.log(v) // [1,1] [2,2] [3,3] [4,4]
}

三,weakSet

1.WeakSet 结构与 Set 类似,也是不重复的值的集合。但是,它与 Set 有两个区别。
首先,WeakSet 的成员只能是对象,而不能是其他类型的值。其次,WeakSet 中的对象都是弱引用,即垃圾回收机制不考虑 WeakSet 对该对象的引用

{
	const a = [[1, 2], [3, 4]];
	const ws = new WeakSet(a); // WeakSet {[1, 2], [3, 4]}
}
	

2.weakSet没有size属性,也不能被遍历。

3.weakSet 除了没有clear方法,其他和set一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值