Set和Map初探

2019-01-212197
秦泽森
web研发

Set

  • Set数据结构是ES6新增的,是一个数组结构,其数据不重复,且数组中的数据类型没有限制。
  • Set数据结构的键和值是一致的,所以取得的键和值结果表现是一致的。
  • Set数据结构具有的属性和方法如下
    • constructor 默认指向Set数据结构
    • size方法,和length行为相似,返回Set数据结构的数据长度
    • values和keys和entries,分别获得键和值和键值对的遍历结构
    • forEach遍历
    • add、delete、has、clear
  • Set可以用于去重,利用[...new Set()]的方式或者Array.from(new Set())的方式

WeakSet

  • ES6新增,和Set相似但有不同。存储不重复数据,数据类型仅限于对象,且对对象的引用不会产生对象的应用计数。
  • 具有方法:add、delete、has
  • 不能遍历
  • WeakSet的数组存放的数据是变动的,因为其对对象的引用是不参与对象的引用计数的,所以其引用的对象可能被垃圾回收机制回收,从而导致WeakSet的数据是变动的。

Map

  • Map数据结构的出现是为了弥补对象的键名只能是字符串的缺点,故其键名可以是任何数据结构
  • Map的键名不能重复,实质是键名指向的内存空间不能相同。因此对基本数据类型不能同名,而对引用类型,只要其引用指向的内存地址不同时可以同名。
  • Map和Set一样具有size、和一些遍历方法:keys、values、entries、forEach
  • Map具有自己的方法:set、get、delete、has、clear
  • Map可以通过new Map( [ [键值对数组],...])的方式创建

WeakMap

  • WeakMap和Map的关系类似于WeakSet和Set的关系,WeakMap的键名只能是对象,且不计入对象的引用计数。
  • WeakMap没有遍历方法,没有长度值size。
  • WeakMap具有set、get、delete、has方法。
  • 使用WeakMap的一大优势是可以避免内存泄漏。
分享
点赞4
打赏
上一篇:代理工具Fiddler -调试与替换接口状态
下一篇:浏览器存储