Set
定义
- set类似数组, 成员是唯一且无序,也就是值不能重复。
- 可以遍历, 方法有:add、delete、has、clear等
WeakSet
定义
- 成员都是对象
- 成员都是弱引用,可以随时消失。 可以保持DOM节点,不易造成内存泄露
- 不能遍历
Map
定义
- 本质上是键值对的集合,类似集合
- 可以遍历,方法很多可以跟各种数据格式转换
类型转换
map ==> array
1
2const map = new Map([[1, 1], [2, 2], [3, 3]])
console.log([...map]) // [[1, 1], [2, 2], [3, 3]]array ==> map
1
2const map = new Map([[1, 1], [2, 2], [3, 3]])
console.log(map) // Map {1 => 1, 2 => 2, 3 => 3}map ==> object
1
2
3
4
5
6
7
8
9function mapToObj(map) {
let obj = Object.create(null)
for (let [key, value] of map) {
obj[key] = value
}
return obj
}
const map = new Map().set('name', 'An').set('des', 'JS')
mapToObj(map) // {name: "An", des: "JS"}object ==> map
1
2
3
4
5
6
7
8
9function objToMap(obj) {
let map = new Map()
for (let key of Object.keys(obj)) {
map.set(key, obj[key])
}
return map
}
objToMap({'name': 'An', 'des': 'JS'}) // Map {"name" => "An", "des" => "JS"}map ==> json
1
2
3
4
5
6function mapToJson(map) {
return JSON.stringify([...map])
}
let map = new Map().set('name', 'An').set('des', 'JS')
mapToJson(map) // [["name","An"],["des","JS"]]json ==> map
1
2
3
4
5function jsonToStrMap(jsonStr) {
return objToMap(JSON.parse(jsonStr));
}
jsonToStrMap('{"name": "An", "des": "JS"}') // Map {"name" => "An", "des" => "JS"}
WeakMap
定义
- WeakMap 对象是一组键值对的集合,其中的键是弱引用对象,而值可以是任意。
- 不能遍历