欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-20 22:00:17
...
  1. Set的概念:
    Set是ES6 提供的新的数据结构。它类似于数组,只有属性值,并且成员的值都是唯一的,没有重复的值

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

  3. 传递参数的讲究:
    Set、WeakSet传递的参数必须具备迭代接口,比如:数组,字符串,arguments等,
    迭代接口就是指在原型上有:Symbol(Symbol.iterator)
    ES6之深入Set 与 WeakSet的知识讲解

  4. Set实例化是长什么样的?
    ES6之深入Set 与 WeakSet的知识讲解

  5. WeakSet实例化是长什么样的?
    ES6之深入Set 与 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 的知识,欢迎关注。
如有知识疏漏的地方,请指出,谢谢!

相关标签: es6 javascript