设置JavaScript数据结构

Set数据结构允许将数据添加到容器,对象或原始类型(字符串,数字或布尔值)的集合中,并且您可以将其视为将值用作映射键的Map,其中map值始终为布尔值true。

什么是套装

Set数据结构允许将数据添加到容器。

ECMAScript6(也称为ES2015)将Set数据结构引入了JavaScript世界,以及地图

Set是对象或原始类型(字符串,数字或布尔值)的集合,您可以将其视为一个Map,其中将值用作映射键,而map值始终为布尔值true。

初始化集合

通过以下方式初始化Set:

const s = new Set()

将项目添加到集合

您可以使用add方法:

s.add('one')
s.add('two')

集合仅存储唯一元素,因此调用s.add('one')多次不会添加新项目。

您不能同时将多个元素添加到集合中。你需要打电话add()多次。

检查项目是否在集合中

一旦元素进入集合,我们就可以检查集合是否包含它:

s.has('one') //true
s.has('three') //false

从“按键设置”中删除项目

使用delete()方法:

s.delete('one')

确定集合中的项目数

使用size财产:

s.size

删除集合中的所有项目

使用clear()方法:

s.clear()

迭代集中的项目

使用keys()或者values()方法-它们等效:

for (const k of s.keys()) {
  console.log(k)
}

for (const k of s.values()) { console.log(k) }

entries()方法返回一个迭代器,您可以像这样使用它:

const i = s.entries()
console.log(i.next())

呼唤i.next()将每个元素返回为{ value, done = false }对象,直到迭代器结束为止donetrue

您还可以在集合上使用forEach()方法:

s.forEach(v => console.log(v))

或者您也可以在for..of循环中使用该集合:

for (const k of s) {
  console.log(k)
}

用值初始化集合

您可以使用一组值来初始化Set:

const s = new Set([1, 2, 3, 4])

转换为数组

将Set键转换为数组

const a = [...s.keys()]

// or const a = […s.values()]

弱集

WeakSet是一种特殊的Set。

在Set中,永远不会垃圾收集项目。相反,WeakSet允许自由地对其所有项目进行垃圾回收。 WeakSet的每个键都是一个对象。当对该对象的引用丢失时,可以对该值进行垃圾回收。

主要区别如下:

  1. 您无法遍历WeakSet
  2. 您无法从WeakSet中清除所有项目
  3. 你不能检查它的大小

WeakSet通常由框架级代码使用,并且仅公开以下方法:

  • 添加()
  • 已()
  • 删除()

免费下载我的JavaScript初学者手册


更多js教程: