javaScript中的 Set 和 Map

时间:2019-12-25
本文章向大家介绍javaScript中的 Set 和 Map,主要包括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 的键只能是对象

原文地址:https://www.cnblogs.com/ADong4031/p/12096985.html