JS中的Map&Set

Map
a.set/get/has/delete/clear/size
带键值对的集合【【 ,】【 ,】【 ,】】
键可以是任何类型(使用对象作为键是 Map 最值得注意和重要的功能之一)
Set
b.add/has/delete/clear/size
不重复‘值’的集合【 , , ,】
注意
1.a[键] 会被当做普通对象
2.可‘链式’调用
3.for…of / forEach
4.a/b.keys/.value/.entries
5.有序
相关创建
1.空的 let a = new Map( );
2.初始化创建 [ [ , ] ,[ , ] ,[ , ] ]
3.(Map-a<=普通对象-obj) let a = new Map ( Object.entries (obj) ) ;
4.(普通对象-obj<=Map-a) let obj= Object.fromEntries ( a ) ;
WeakMap
键必须是对象;
不阻止垃圾回收机制 “ 对作为键的对象(key object)” 的回收。
不支持迭代、不支持 keys(),values() , entries() ,所以无法获取 WeakMap 的所有键或值。
支持 get(key) / set(key, value) / delete(key) / has(key)
WeakMap应用
1.额外数据的存储:想存储一些与某对象相关的数据,那么这些数据就应与该对象共存亡
2.缓存
WeakSet
只能添加对象(不能是原始值)。
对象只有在其它某个(些)地方能被访问的时候,才能留在 set 中。
不支持迭代、不支持 keys(),values() , entries() 。
支持 add,has 和 delete 方法。
WeakSet应用
1.针对额外数据 “是/否” 的事实
总结
WeakMap 和 WeakSet 被用作 “主要 ” 对象存储之外的 “辅助 ” 数据结构,最明显的局限性就是不能迭代,并且无法获取所有当前内容。那样可能会造成不便,但是并不会阻止 WeakMap / WeakSet 完成其主要工作 — 成为在其它地方管理/存储“额外”的对象数据。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值