ES6 引入了两种新的集合类型 Set 和 WeakSet,它们比传统的数组和对象更加强大和灵活。本文将详细介绍 Set 和 WeakSet 的使用,并提供一些示例代码,帮助读者更好地理解它们的用途和使用方法。
Set
Set 是 ES6 中一种新的集合类型,它类似于数组但是成员唯一且无序。Set 中的成员可以是任何类型的值。通过 Set 可以方便地去重,判断一个元素是否存在于集合中,对两个集合求并集、交集、差集等操作。
创建 Set
使用 Set 的构造函数可以创建一个空的 Set 实例:
const set = new Set();
如果希望在创建时就向 Set 中添加元素,可以把要添加的元素作为参数传入构造函数:
const set = new Set([1, 2, 3]);
Set 属性和方法
Set 实例具有以下常用属性和方法:
- size:返回 Set 中元素的数量。
- add(value):向 Set 中添加元素,如果元素已经存在则不会重复添加。
- delete(value):从 Set 中删除指定元素,如果元素不存在则不会报错。
- has(value):判断 Set 中是否包含指定元素。返回值为布尔类型。
- clear():清空 Set 中的所有元素。
Set 示例
-- -------------------- ---- ------- -- -- --- -- ----- --- - --- ------- -- ---- -- -------- ----------- -- ---- ----------- -- ----- -- ---- ----------- -- --- - -- -- -- - - ----------- -- --- - -- -- -- - ---------- -- ---- -------------- -- ---- -------------- -- ----- -- -- --- ------------ -- --- --
WeakSet
WeakSet 和 Set 类似,也是一种集合类型,但是它只能存储对象类型的成员,而且它的成员是弱引用,不会影响对象的垃圾回收。WeakSet 中的成员也是唯一且无序的。
创建 WeakSet
使用 WeakSet 的构造函数可以创建一个空的 WeakSet 实例:
const weakSet = new WeakSet();
WeakSet 不支持直接向其中添加成员,需要通过其 add() 和 delete() 方法来添加和删除元素。注意,加入 WeakSet 中的成员必须是对象。
WeakSet 属性和方法
WeakSet 实例具有以下常用属性和方法:
- add(value):向 WeakSet 中添加元素,如果元素已经存在则不会重复添加。
- delete(value):从 WeakSet 中删除指定元素,如果元素不存在则不会报错。
- has(value):判断 WeakSet 中是否包含指定元素。返回值为布尔类型。
WeakSet 示例
-- -------------------- ---- ------- -- -- ------- -- ----- ------- - --- ---------- -- ---- ----- ---- - - ----- ---- -- ----- ---- - - ----- ---- -- ------------------ -- ------- - ------- ------- - ------------------ -- ------- - ------- -------- ------- ------- - -- ---- --------------------- -- ---- -- -------- ------------------ -- ---- ------------------ -- -----
总结
Set 和 WeakSet 是两种强大的集合类型,它们可以有效地帮助我们去重、快速查找元素、取集合的交、并、差等操作。在实际开发过程中,我们可以根据需要选用不同的集合类型来优化代码。同时,在使用 WeakSet 时需要注意对象生命周期和内存泄漏等问题,以保证代码的健壮性和性能。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65a6339aadd4f0e0ffee890a