JS 中的数据结构

发布于 2023-10-21 17:32:30 字数 1371 浏览 41 评论 0

Set

数组去重常用到 Set, 因为 Set 是元素的集合,且 Set 中的元素是唯一的

const set = new Set([1,2,3]) // 数组转 Set
const array = [...set] // set 转 数组
  • add
  • delete
  • clear
  • entries
  • forEach
  • has
  • keys
  • values

因为原型上实现了 Symbol.iterator ,所以可以使用扩展运算符进行迭代

weakSet

也是集合, 但是对其中的元素保有弱引用,如果元素除了 weakSet 之外,没有其他引用将会被回收

特点:

  1. 只能存储对象
  2. 不可枚举

方法

  • add
  • delete
  • has

Map

存储键值对,可以保留存储的顺序,键可以为任何类型

构造函数

const map = new Map([[1,2]]) 

属性

  • size

方法

  • set
  • get
  • delete
  • clear
  • has
  • keys
  • values
  • entries
  • forEach

Map vs Object

  1. Map 只有设置的键,而 Object 会包含原型上的键
  2. Map 键可以设置为任何类型,Object 只能 string 和 symbol
  3. Map 插入有序,Object 规范有序,看具体实现,并不可靠
  4. Map 可以通过 size 获取属性个数, Object 无直接方法
  5. Map 可迭代, Object 不可直接迭代【for ... of】,Object 可以实现 迭代方法,也可用 for ... in 迭代属性
  6. Map 性能在频繁删除和添加时较 Object 好
  7. Map 不支持序列化,需要手动在 JSON.stringify 中 replacer 实现,Object 天然支持

WeakMap

对键保持弱引用,键必须是对象

方法

  • get
  • set
  • delete
  • has

特点

  • 弱引用
  • 不可迭代

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

落花随流水

暂无简介

文章
评论
28 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文