Set
类似于数组,但成员唯一,没有重复值,是以 [Value, value] 的形式储存
- Set实例属性
- constructor: 构造函数(即Set本身)
- size : 成员数量
-
Set实例方法
[操作方法]
- add(value):新增,相当于 array里的push
- delete(value):存在即删除集合中value
- has(value):判断集合中是否存在 value
- clear():清空集合
- keys():返回一个包含集合中所有键的迭代器
- values():返回一个包含集合中所有值得迭代器
- entries():返回一个包含Set对象中所有元素得键值对迭代器
- forEach(callbackFn, thisArg):用于对集合成员执行callbackFn操作,如果提供了 thisArg 参数,回调中的this会是这个参数,没有返回值
- Set集合转数组:
Array.from(new Set(array)) 或者 [...new Set(array)]
WeakSet
WeakSet 对象允许你将弱引用对象储存在一个集合中
- WeakSet 与 Set 的区别:
- WeakSet 只能储存对象引用,不能存放值,而 Set 对象都可以存储
- WeakSet 对象中储存的对象值都是被弱引用的,即垃圾回收机制不考虑 WeakSet 对该对象的应用。且不能遍历
- WeakSet实例属性
- constructor: 构造函数
- WeakSet实例方法: 只有操作方法,无遍历方法
- add(value):在WeakSet 对象中添加一个元素value
- has(value):判断 WeakSet 对象中是否包含value
- delete(value):删除元素 value
- clear():清空所有元素,注意该方法已废弃
Map
以 [key, value] 的形式储存元素
- Map实例属性:
- constructor:构造函数
- size:返回集合中所包含的元素个数
-
Map实例的方法:
[操作方法]
- set(key, value):中添加新元素
- get(key):通过键查找特定的数值并返回
- has(key):判断是否存在键key
- delete(key):通过键 key 移除对应的数据
- clear():删除所有元素
- Keys():所有键名以迭代器形式返回
- values():所有数值以迭代器形式返回
- entries():返回所有成员的迭代器
- forEach():遍历所有成员
- Map转数组:使用扩展运算符(…)
[...new Map(array)]
WeakMap
WeakMap 对象是一组键值对的集合,其中的键是弱引用对象,而值可以是任意.
WeakMap 中,每个键对自己所引用对象的引用都是弱引用,在没有其他引用和该键引用同一对象,这个对象将会被垃圾回收(相应的key则变成无效的),所以,WeakMap 的 key 是不可枚举的。
- WeakMap实例属性:
- constructor:构造函数
- WeakMap实例方法,只有操作方法,无遍历方法
- has(key):判断是否有 key 关联对象
- get(key):返回key关联对象(没有则则返回 undefined)
- set(key):设置一组key关联对象
- delete(key):移除 key 的关联对象
总结
Set
- 成员唯一、无序且不重复
- [value, value],键值与键名是一致的(或者说只有键值,没有键名)
- 可以遍历,方法有:add、delete、has
WeakSet
- 成员都是对象
- 成员都是弱引用,可以被垃圾回收机制回收,不容易造成内存泄漏
- 不能遍历,方法有add、delete、has
Map
- 本质上是键值对的集合,类似集合
- 可以遍历,方法很多可以跟各种数据格式转换
WeakMap
- 只接受对象作为键名(null除外),不接受其他类型的值作为键名
- 键名是弱引用,键值可以是任意的,键名所指向的对象可以被垃圾回收,此时键名是无效的
- 不能遍历,方法有get、set、has、delete