map set weakmap weakset
程序员文章站
2022-06-12 21:42:36
...
Map Set
方法都可以使用for...of
方法,不可以使用for...in
Map
Map与get、set。Map存储key-value键值对,重复向同一个key添加value,会替代原来的value
//两种创建方式
var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
var m = new Map(); // 空Map
m.set('Adam', 67); // 添加新的key-value
m.set('Bob', 59);
m.has('Adam'); // 是否存在key 'Adam': true
m.get('Adam'); // 67
m.delete('Adam'); // 删除key 'Adam'
m.get('Adam'); // undefined
Set
Set中只存储key且不会有重复的key,因此重复添加key不会有任何变化,没有length属性
//两种创建方式
var s1 = new Set(); // 空Set
var s2 = new Set([1, 2, 3]); // 含1, 2, 3
s2.add(4)//一次只能添加一个
s2.delete(3)
s2.clear()//移除Set内所有元素
Set.has(value)
Set.forEach(callbackFn[, thisArg])
Map
特性:
Map.length=0
Map.prototype.size 返回Map对象的键/值对的数量。
Map的键可以是任意值,包括函数、对象和任意基本类型
Map 中的 key 是有序的。因此,当迭代的时候,一个 Map 对象以插入的顺序返回键值。
Map 是 iterable 的,所以可以直接被迭代。
在频繁增删键值对的场景下表现更好
如果我们使用对象作为常规 Map 的键,那么当 Map 存在时,该对象也将存在。它会占用内存,并且应该不会被(垃圾回收机制)回收,除非使用map.clear()
WeakMap
特性:
不可迭代
key值只能是对象
key值与其指向的对象是一种弱指向,不会影响其是否被垃圾回收机制删除
当key值对象没有被别处引用时,该对象会被从内存中删除
weakset
特性
WeakSet
的表现类似:
- 与
Set
类似,但是我们只能向WeakSet
添加对象(而不能是原始值)。 - 对象只有在其它某个(些)地方能被访问的时候,才能留在 set 中。
- 跟
Set
一样,WeakSet
支持add
,has
和delete
方法,但不支持size
和keys()
,并且不可迭代。
上一篇: 原型模式(prototype)
下一篇: ES6数组的高阶方法,箭头函数,对象
推荐阅读
-
详谈js遍历集合(Array,Map,Set)
-
四种常见的数据结构、LinkedList、Set集合、Collection、Map总结
-
详解ES6中的 Set Map 数据结构学习总结
-
JavaScript之Map和Set_动力节点Java学院整理
-
set容器与map容器的简单应用
-
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
-
Java 集合基础知识 List/Set/Map
-
set map symbol
-
彻底弄懂ES6中的Map和Set
-
引用、浅拷贝及深拷贝 到 Map、Set(含对象assign、freeze方法、WeakMap、WeakSet及数组map、reduce等等方法)