ES6提供了两种新的数据结构Set 和 Map
这两种数据结构在开发以及算法考察中很重要 所以我们专门介绍一下(其实之前算法题已经用过啦)
Set
类似于数组 但是成员值唯一 没有重复的值
Set本身是一个构造函数 用来生成Set数据结构
先简单感受一下Set的作用
基本语法
new Set([可以传入数组]) 创建一个Set数据结构
add() 向Set中添加元素 重复的元素不会添加!
has() 查询Set中是否有某个元素 返回布尔值
delete() 删除Set中的元素
[…set] / Array.from(set) = > 将Set转化为数组
size属性 获取Set中元素个数
clear() 清除所有成员
遍历操作
(1)keys() values() entries()
可以省略values方法 直接用for…of循环遍历Set
(2)forEach()
Set的应用
(1)实现数组去重
扩展运算符和Set结构相结合 就可以去除数组中的重复成员
(2)实现并集(Union) 交集(Intersect) 差集(Difference)
Map
本质上是键值对的集合(Hash结构)
简单感受一下Map的作用
基本语法
new Map([[],[],…]) 可传入二维数组 创建一个Map数据结构
set(key,value) 向Map中添加元素(类型不受限制)
has(key) 查询Map中是否存在某个键
get(key) 获得key对应的value值 没有key则返回undefined
delete(key) 删除对应的键值对
[…map] = > 将Map转化为数组
size属性 获取Map中键值对个数
clear() 清除所有成员
Map构造函数接收数组作为参数时 实际上执行的是下面的算法
Map的键实际上是跟内存地址绑定的 只要内存地址不一样 就视为两个键 如下图 k1 k2值相同 但是它们在Map结构中被视为两个键
遍历操作
keys() values() entries() forEach()
结合数组的map方法,filter方法 可以实现Map的遍历和过滤 (Map本身没有map和filter方法) 如下图示例