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的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript-Map和Set

javascript中的set和map

JavaScript中的Map和Set

JavaScript 中的 Map, Set, WeakMap, WeakSet

javascript中的Set和Map数据结构

Map和Set