Set与Map小记

ES6的新数据结构用法小记

Posted by Ray on 2017-12-12

SET

数组去重:[...new Set(arr)]

在集合中两个对象总是不相等的

操作:

  • set.add(value) 为集合添加一个元素
  • set.delete(value) 删除集合中的某一个元素,返回的是布尔值表示是否删除成功
  • set.has(value) 查询该值是否子集合之中
  • set.size() 返回集合公有多少个元素
  • set.get()和set.set()
  • set.clear() 清空所有集合成员
  • set.keys()与set.values() 返回集合元素的一个遍历器 for (let item of set.keys())
  • set.forEach((value, key) =>{})遍历集合

求并集

1
2
// a,b分别为两个集合
let union = new Set([...a, ...b])

求交集

1
2
// a,b分别为两个集合
let intersect = new Set([...a].filter(element=>b.has(element)))

求差集

1
let diff = new Set([...a].filter(element=>!b.has(element)))

WeakSet

特点:

  • WeakSet 的成员只能是对象,而不能是其他类型的值
  • WeakSet 中的对象都是弱引用,即垃圾回收机制不考虑 WeakSet 对该对象的引用
  • WeakSet 不可遍历,并且没有size
1
2

let ws = new WeakSet([[1,2],[2,4]])

Map

特点:

  • 一个 key 值可以是对象的对象
  • Map 转数组 […map]

WeakMap

特点:

  • 不结束除了对象之外的类型作为 key
  • WeakMap的弱引用知识针对 key,value正常引用
  • 没有遍历操作
本文为原创文章作为学习交流笔记,如有错误请您评论指教
转载请注明来源:https://isliulei.com/article/Set与Map/