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]
每个元素都是数组,数组中第一个值为 键 ,第二个值为 值
本文来自博客园,作者:ycccc丶,转载请注明原文链接:https://www.cnblogs.com/imycc/p/16486752.html