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 示例
// 创建 Set 实例 const set = new Set([1, 2, 3]); // 判断元素是否存在 set.has(2); // true set.has(4); // false // 添加元素 set.add(4); // Set { 1, 2, 3, 4 } set.add(4); // Set { 1, 2, 3, 4 },元素不会重复添加 // 删除元素 set.delete(4); // true set.delete(4); // false // 清空 Set set.clear(); // 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 示例
// 创建 WeakSet 实例 const weakSet = new WeakSet(); // 添加对象 const obj1 = { name: '张三' }; const obj2 = { name: '李四' }; weakSet.add(obj1); // WeakSet { [object Object] } weakSet.add(obj2); // WeakSet { [object Object], [object Object] } // 删除对象 weakSet.delete(obj2); // true // 判断对象是否存在 weakSet.has(obj1); // true weakSet.has(obj2); // false
总结
Set 和 WeakSet 是两种强大的集合类型,它们可以有效地帮助我们去重、快速查找元素、取集合的交、并、差等操作。在实际开发过程中,我们可以根据需要选用不同的集合类型来优化代码。同时,在使用 WeakSet 时需要注意对象生命周期和内存泄漏等问题,以保证代码的健壮性和性能。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a6339aadd4f0e0ffee890a