Set 和 Map

Set

类似于数组,但成员都是唯一的,实现了iterator接口,可以使用扩展运算符 和 for...of 遍历

let s = new Set([1,2,3])
// new Set()如果传递一个可迭代的对象,这个对象所有的元素被添加到新的Set中
// s = {1,2,3}
s.size // 返回集合的元素个数
s.add(4) // 添加一个元素 4  s = {1,2,3,4}
s.delete(4) // 删除指定元素  s = {1,2,3}
s.has(3) // 检测集合中是否包含某个元素 true
s.clear() // 清空集合 s = {}

数组去重
由于set集合中的成员都是唯一的,并且set实现了iterator接口,可以使用扩展运算符

let arr = [1,1,2,2,3,3]
let s = new Set(arr) // s = {1,2,3} 但是现在s还不是一个数组
s = [...s] // 利用扩展运算符展开,现在s是一个数组了

并集

let s = [...new Set([...arr,...arr2])]

交集

let s = [...new Set(arr)].filter(item => new Set(arr2).has(item))

差集

let s = [...new Set(arr)].filter(item => !(new Set(arr2).has(item)))

Map

类似于对象,也是键值对的集合。但是“键”的范围不限于字符串,任何类型的数据都可以当作“键”,Map也有iterator接口

let m = new Map()
m.set(键,值) // 添加元素,键可以是任意数据类型(包括对象)
m.get(键) // 返回指定键的键值
m.size // 返回集合的元素个数
m.delete(键) // 删除指定键的元素
m.has(键) // 检测集合中是否包含某个元素
m.clear() // 清空集合

普通对象的键只能是string类型,Map对象的键可以是任意类型(进化版对象)
[key,value]
每个元素都是数组,数组中第一个值为 键 ,第二个值为 值

posted @ 2022-07-17 13:38  ycccc丶  阅读(19)  评论(0编辑  收藏  举报
//背景线条