什么是 Set 和 WeakSet
Set 和 WeakSet 是 ES6 中新增的两个集合类型,用于存储一组唯一的值。
Set 和 WeakSet 的区别在于,Set 存储的是对象的引用,而 WeakSet 存储的是对象的弱引用。
Set 的使用实例
创建 Set
可以使用 Set 构造函数来创建一个空的 Set:
const set = new Set();
也可以使用一个数组来初始化一个 Set:
const set = new Set([1, 2, 3]);
添加元素
使用 add 方法来添加元素:
set.add(4);
删除元素
使用 delete 方法来删除元素:
set.delete(4);
判断元素是否存在
使用 has 方法来判断元素是否存在:
set.has(4); // false
获取元素个数
使用 size 属性来获取元素个数:
set.size;
遍历元素
可以使用 for...of 循环来遍历 Set 中的元素:
for (const item of set) { console.log(item); }
将 Set 转换为数组
可以使用 Array.from 方法将 Set 转换为数组:
const arr = Array.from(set);
Set 的应用场景
Set 可以用来去重:
const arr = [1, 2, 3, 2, 1]; const set = new Set(arr); const uniqueArr = Array.from(set);
WeakSet 的使用实例
创建 WeakSet
可以使用 WeakSet 构造函数来创建一个空的 WeakSet:
const weakSet = new WeakSet();
添加元素
使用 add 方法来添加元素:
const obj = {}; weakSet.add(obj);
删除元素
使用 delete 方法来删除元素:
weakSet.delete(obj);
判断元素是否存在
由于 WeakSet 中存储的是对象的弱引用,因此无法判断元素是否存在。
WeakSet 的应用场景
WeakSet 可以用来存储对象的私有属性:
// javascriptcn.com 代码示例 const obj = {}; class Person { constructor(name) { this.name = name; privateProp.set(this, obj); } } const privateProp = new WeakSet();
总结
Set 和 WeakSet 是 ES6 中新增的两个集合类型,用于存储一组唯一的值。Set 存储的是对象的引用,而 WeakSet 存储的是对象的弱引用。Set 可以用来去重,WeakSet 可以用来存储对象的私有属性。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/657ac2edd2f5e1655d539aff