# Set 和 Map 数据结构
# Set
Set.prototype.size
:返回Set
实例的成员总数。Set.prototype.add(value)
:添加某个值,返回Set
结构本身。Set.prototype.delete(value)
:删除某个值,返回一个布尔值,表示删除是否成功。Set.prototype.has(value)
:返回一个布尔值,表示该值是否为Set
的成员。Set.prototype.clear()
:清除所有成员,没有返回值。Set.prototype.keys()
:返回键名的遍历器Set.prototype.values()
:返回键值的遍历器Set.prototype.entries()
:返回键值对的遍历器Set.prototype.forEach()
:使用回调函数遍历每个成员
const set = new Set([1, 2, 3, 4, 4]);
[...set];
// [1, 2, 3, 4]
[...new Set([NaN, NaN])]; // [NaN]
# WeakSet
WeakSet
的成员只能是对象,而不能是其他类型的值WeakSet
中的对象都是弱引用,即垃圾回收机制不考虑WeakSet
对该对象的引用WeakSet
没有size
属性,没有办法遍历它的成员。WeakSet.prototype.add(value)
:向WeakSet
实例添加一个新成员。WeakSet.prototype.delete(value)
:清除WeakSet
实例的指定成员。WeakSet.prototype.has(value)
:返回一个布尔值,表示某个值是否在WeakSet
实例之中。
# Map
和对象类似,对象的
key
只能是 string,Map
的key
可以使用任意类型的值。Map.size
Map.prototype.set(key, value)
Map.prototype.get(key)
Map.prototype.has(key)
Map.prototype.delete(key)
Map.prototype.clear()
Map.prototype.keys()
:返回键名的遍历器。Map.prototype.values()
:返回键值的遍历器。Map.prototype.entries()
:返回所有成员的遍历器。Map.prototype.forEach()
:遍历Map
的所有成员。需要特别注意的是,Map
的遍历顺序就是插入顺序。
# WeakMap
WeakMap
只接受对象作为键名(null
除外)WeakMap
的键名所指向的对象,不计入垃圾回收机制。WeakMap
没有遍历操作(即没有keys()
、values()
和entries()
方法),也没有size
属性。WeakMap
无法清空,即不支持clear
方法。因此,WeakMap
只有四个方法可用:get()
、set()
、has()
、delete()
。
← 块级作用域 数字计算处理常见函数 →