JS 中的数据结构
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 之外,没有其他引用将会被回收
特点:
- 只能存储对象
- 不可枚举
方法
- add
- delete
- has
Map
存储键值对,可以保留存储的顺序,键可以为任何类型
构造函数
const map = new Map([[1,2]])
属性
- size
方法
- set
- get
- delete
- clear
- has
- keys
- values
- entries
- forEach
Map vs Object
- Map 只有设置的键,而 Object 会包含原型上的键
- Map 键可以设置为任何类型,Object 只能 string 和 symbol
- Map 插入有序,Object 规范有序,看具体实现,并不可靠
- Map 可以通过 size 获取属性个数, Object 无直接方法
- Map 可迭代, Object 不可直接迭代【for ... of】,Object 可以实现 迭代方法,也可用 for ... in 迭代属性
- Map 性能在频繁删除和添加时较 Object 好
- Map 不支持序列化,需要手动在 JSON.stringify 中 replacer 实现,Object 天然支持
WeakMap
对键保持弱引用,键必须是对象
方法
- get
- set
- delete
- has
特点
- 弱引用
- 不可迭代
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: 利用栈判断括号是否合法
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论