Map
本质
Map 数据结构类似对象,也是键值对的集合。
Object =》 键(只能是字符串)值对 =》 字符串 - 值
Map => 键(任意类型的值)值对 =》 值 - 值
属性
size 属性返回Map结构的成员总数
操作方法
set(key, value)
get(key)
has(key)
delete(key)
clear()
遍历方法
map.keys()
map.values()
map.entries()
forEach()
与其它数据的相互转换
map 转 数组
数组 转 map
map 转 对象
对象 转 map
map 转 JSON
JSON 转 map
let map = new Map()map.set('age', 18).set('sex', 'woman')let mapToarr = [...map]let arrTomap = new Map(mapToarr)
let map = new map()map.set('age', 18).set('sex', 'woman').set('college', '清华daxue')function mapToObj(mapdata) {let obj = Object.create(null)fot(let [key, value] of mapdata.entries()) {Reflect.set(obj, key, value)}return obj}let mapObj = mapToObf(map)function objTomap(obj) {let map = new Map()for (let [key, value] of obj) {map.set(key, value)}return map}objTomap(mapToObj)
let map = new Map()map.set('age', 18).set('sex', 'woman')// map -》JsonStrfunction mapToJsonOne(mapdata) {let obj = Object.create(null)for (let [key, value] of mapdata) {Reflect.set(key, value)}return JSON.stringfiy(obj)}let str1 = mapToJsonOne(map)function mapToJsonTwo(mapdata) {let arr = [...mapdata]return JSON.stringify(arr)}let str2 = mapToJsonTwo(map)function jsonToMapOne(jsonstr) {let map = new Map()for (let [key, value] of JSON.parse(jsonstr)) {map.set(key, value)}return map}jsonToMapOne(str1)function jsonToMapTwo(jsonArr) {let arr = JSON.parse(jsonArr)let map = new Map(arr)return map}jsonToMapTwo(str2)
WeakMap
与map的区别
- 只接受对象作为键名
- WeakMap的键名所引用的对象都是弱类型,即垃圾回收机制会自动释放该对象所占用的内存。
- 没有size 属性, 不可遍历
四个可用方法
get()
set()
has()
delete()
使用场景
weakMap 把DOM 节点作为键名
weakMap 用来部署私有属性
