ES6之深入Set 与 WeakSet的知识讲解

  1. Set的概念:
    Set是ES6 提供的新的数据结构。它类似于数组,只有属性值,并且成员的值都是唯一的,没有重复的值

  2. WeakSet的概念:
    WeakSet 结构与 Set 类似,weakSet的成员值是唯一的,并且 WeakSet 的成员只能是对象,而不能是其他类型的值

  3. 传递参数的讲究:
    Set、WeakSet传递的参数必须具备迭代接口,比如:数组,字符串,arguments等,
    迭代接口就是指在原型上有:Symbol(Symbol.iterator)
    在这里插入图片描述

  4. Set实例化是长什么样的?
    在这里插入图片描述

  5. WeakSet实例化是长什么样的?
    在这里插入图片描述

  6. Set 与 WeakSet 之间的区别?
    WeakSet和 Set 对象的区别有两点:
    1.与Set相比,WeakSet 只能是对象的集合,而不能是任何类型的任意值
    2.WeakSet持弱引用:集合中对象的引用为弱引用如果没有其他的对 WeakSet中对象的引用,那么这些对象会被当成垃圾回收掉。 这也意味着WeakSet中没有存储当前对象的列表。 正因为这样,WeakSet 是不可枚举的。

  7. Set的应用(数组去重,数组的交差并集):

let o = {
	name: 'cst'
}
let arr = [11, o, 11, 12, 33, o, 33, 44, 55, 44, {name: 'hfq'}];

	// 用Set来实现去重
	let os = new Set(arr);
	let newArr = [...os];
	console.log(newArr);

let arr1 = [1, 2, 3, 4, 5, 3];
let arr2 = [1, 3, 4, 6, 7, 8];

	// 交集
	let osj1 = new Set(arr1);
	let osj2 = new Set(arr2);
	let newarrj = [...osj1].filter(ele => osj2.has(ele));
	console.log(newarrj);

	// 并集
	let osbing = new Set([...arr1, ...arr2]);
	console.log([...osbing]);

	// 差集
	let oscj1 = new Set(arr1);
	let oscj2 = new Set(arr2);
	let newarrc1 = [...oscj1].filter(ele => !oscj2.has(ele));
	console.log(newarrc1);

	let newarrc2 = [...oscj2].filter(ele => !oscj1.has(ele));
	console.log(newarrc2);

下篇文章将更新Map 与 WeakMap 的知识,欢迎关注。
如有知识疏漏的地方,请指出,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值