ES6中Set、Map学习| 青训营笔记

82 阅读3分钟
  • “这是我参与「第四届青训营 」笔记创作活动的的第7天”

Set是一种叫做集合的数据结构,Map是一种叫做字典的数据结构

  • 集合
    是由一堆无序的、相关联的,且不重复的内存结构【数学中称为元素】组成的组合
  • 字典
    是一些元素的集合。每个元素有一个称作key 的域,不同元素的key 各不相同

区别?

  • 共同点:集合、字典都可以存储不重复的值
  • 不同点:集合是以[值,值]的形式存储元素,字典是以[键,值]的形式存储

一、Set

Setes6新增的数据结构,类似于数组,但是成员的值都是唯一的,没有重复的值,我们一般称为集合

Set本身是一个构造函数,用来生成 Set 数据结构

增删改查

Set的实例关于增删改查的方法:

  • add()
  • delete()
  • has()
  • clear()

add()

添加某个值,返回 Set 结构本身

当添加实例中已经存在的元素,set不会进行处理添加

delete()

删除某个值,返回一个布尔值,表示删除是否成功

has()

返回一个布尔值,判断该值是否为Set的成员

clear()

清除所有成员,没有返回值

遍历

Set实例遍历的方法有如下:

关于遍历的方法,有如下:

  • keys():返回键名的遍历器
  • values():返回键值的遍历器
  • entries():返回键值对的遍历器
  • forEach():使用回调函数遍历每个成员

Set的遍历顺序就是插入顺序

keys方法、values方法、entries方法返回的都是遍历器对象

forEach()用于对每个成员执行某种操作,没有返回值,键值、键名都相等,同样的forEach方法有第二个参数,用于绑定处理函数的this

扩展运算符和Set 结构相结合实现数组或字符串去重

实现并集、交集、和差集

二、Map

Map类型是键值对的有序列表,而键和值都可以是任意类型

Map本身是一个构造函数,用来生成 Map 数据结构

增删改查

Map 结构的实例针对增删改查有以下属性和操作方法:

  • size 属性
  • set()
  • get()
  • has()
  • delete()
  • clear()

size

size属性返回 Map 结构的成员总数。

set()

设置键名key对应的键值为value,然后返回整个 Map 结构

如果key已经有值,则键值会被更新,否则就新生成该键

同时返回的是当前Map对象,可采用链式写法

get()

get方法读取key对应的键值,如果找不到key,返回undefined

has()

has方法返回一个布尔值,表示某个键是否在当前 Map 对象之中

delete()

delete方法删除某个键,返回true。如果删除失败,返回false

clear()

clear方法清除所有成员,没有返回值

遍历

Map结构原生提供三个遍历器生成函数和一个遍历方法:

  • keys():返回键名的遍历器
  • values():返回键值的遍历器
  • entries():返回所有成员的遍历器
  • forEach():遍历 Map 的所有成员

遍历顺序就是插入顺序