说说ES6中新增的Set、Map的区别
# 是什么
Set: 一种叫集合的数据结构
Map: 一种叫字典的数据结合
# 区别
- 都可以存储值
- set存储不重复的值, 以[值,值]方式
- map存储键值对的值
# 怎么用
# Set
const res = new Set()
- 方法: add()、delete()、has()、clear()
res.add(1).add(2) // [1,2]
res.delete(1) // [2]
res.has(2) // true
res.clear() // []
- 遍历:keys()、values()、enties()、forEach()
let res = new Set(['red', 'green', 'blue']);
for(let item of res.keys()){
console.log(item)
}
res = new Set(['red', 'green', 'blue']);
for(let item of res.values()){
console.log(item)
}
res = new Set(['red', 'green', 'blue']);
for(let item of res.enties()){
console.log(item)
}
res.forEach(item => console.log(item))
- 交集、并集、差集
let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);
let union = new Set([...a,...b])
let jiaoji = new Set([...a].filter(item => b.has(item)))
let chaji = new Set([...a].filter(item=> !b.has(item)))
console.log(union) // Set(4) {1, 2, 3, 4}
console.log(jiaoji) // Set(2) { 2, 3}
console.log(chaji) // Set(1) {1}
# Map
const res = new Map()
- 方法:size(属性), set(), get(), has(), delete(), clear()
const res = new Map()
res.set('name', 'fang')
res.set('age', 18)
res.size // 2
res.get('name') // fang
res.has('age') // true
res.delete('age') // true
res.clear()
# WeakSet、WeakMap
基本类似Set和Map
区别:
- 键值部分必须是对象
- 没有遍历方法
- 没有clear方法
# 原理
# FAQ
上次更新: 2021/12/19, 18:05:42