set 集合及方法
- 它是一种数据结构
- 类似于数组,但成员的值都是唯一的
- 实现了迭代器接口,可以使用扩展运算符和
for ...of
遍历
属性和方法:
size
:返回集合的元素个数add
:增加一个新元素,返回当前集合delete
:删除元素,返回一个boolean
值has
:检查集合中是否包含某元素,返回boolean
值
注意:
- 上面说到其中值是唯一的,如果在 new 一个集合实例时,集合中有重复的值,它会自动去重
new
一个集合对象时,需要传入一个数组,因此常用来将数组转化为集合- 使用扩展运算符和集合,灵活地对数组进行操作
声明一个 set
1 | /*jshint esversion: 6 */ |
集合实践
数组去重
1 | const arr = [1, 3, 5, 2, 3, 8, 4, 3]; |
交集
1 | const arr = [1, 3, 5, 2, 3, 8, 4, 3]; |
并集
1 | let union = [...new Set([...arr, ...arr2])]; |
差集
1 | let sub = [...new Set(arr)].filter((item) => !new Set(arr2).has(item)); //注意,比交集加了一个感叹号,表示取反 |
Map
- 它是一种数据结构
- 类似于对象,是键值对的集合
- 因此添加时,需要指定键和值两个参数
- 但它的
key
,可以不是字符串,包括但不限于对象等
- 它也实现了迭代器接口
属性和方法
size
:返回Map
的元素个数set
:添加一个新元素,返回当前map
get
:根据键名拿到(返回)键值has
:检查是否包含某元素,返回boolean
clear
:清空集合,返回undefined
delete
:根据根据键名删除键值对
1 | let map = new Map(); |
评论