javaScript中的 Set 和 Map
Posted adong4031
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaScript中的 Set 和 Map相关的知识,希望对你有一定的参考价值。
小结
- 什么是Set 和 Map
- Set 和 Map 的方法和相关
- weakSet 和 weakMap
什么是 Set 和 Map
这两个就是 Es6 新增的两种 特殊的 数据集合, 以前只有一种 数组, 现在怎加了两种特殊的 Set 特殊在会自动去重, Map 是键值对集合 但是 键可以是 任意类型
Set 和 Map 相关内容
1. Set
创建属性和方法
let set = new Set()
set.add('1'),
set.add(1)
set.add(1)
console.log(set.size) // 2
set.has('1') // true
set.delete('1')
set.clear()
let set1 = new Set([1,2,3])
set 一般用来判断是否存在某个元素, set 中的数据去重使用的是 Object.is() 规则来判断是否相等的也就是说 1 和 ‘1‘ 是不同的元素
Set 转换成数组
let set = new Set([1,2])
Array.form(set)
[...set]
Array.prototype.slice.call(set)
2. Map
创建, 属性 和 方法
let map = new Map()
map.set(1 , 1)
map.size // 1
map.has(1)
map.get(1)
map.delete(1)
map.clear()
let map1 = new Map([ [1,2], [2,3] ])
map 是键值对的集合, 但是 键可以是任意类的值, 不像 对象 只能是字符串, 如果不是还会被转换成字符串
3. 遍历
js中的三种集合, 数组, Set , Map , 都拥有默认的迭代器属性, 所以 你可以通过 for-of 来遍历 这三个集合
weakSet 和 weakMap
首先分析这两者 出现的原因, 当 set 或者 map 中存储的是引用类型的数据, 如果外部对这个数据的引用全部消失, 但是 set 和 map 中还存在着唯一的引用, 这就会 影响垃圾回收机制, 无法被回收, 于是 出现了 这两个 数据类型
特性,
- 当内部存储的引用类型是唯一引用后,会自动移除
- 没有 size属性 不可以迭代
- weakSet 的add() 方法只能接受 对象
- weakMap 的键只能是对象
以上是关于javaScript中的 Set 和 Map的主要内容,如果未能解决你的问题,请参考以下文章