SOURCE

/**
 * Map(ES6引入的键值对数据结构)
作用:存储键值对,键不能重复,对同一个键多次set会覆盖之前的值,键可以是任意类型(对象、函数、基本类型),保持插入顺序。
典型场景:需要非字符串键的字典、需要准确的键数量和高效插入/删除的场景(缓存、映射表、图结构、对象实例映射等)。
常用 API:set、get、has、delete、clear、size、for...of、keys/values/entries;可用数组对初始化。

Map与普通对象 {} 的差异
键类型:Object的键基本会转为字符串;Map 支持任意类型键(包括对象)。
尺寸:Object需手动统计;Map 有 size。
迭代:Object需 Object.keys/entries;Map原生迭代、易遍历。
性能:频繁增删查场景通常 Map 更合适
 */

const  m = new Map()
const keyObj = { id: 123 };
m.set('name','Alice')
m.set(keyObj, {score:99})
console.log(m.get(keyObj)) //{score:99}
console.log(m.get('name')) //Alice 
console.log(m.size) //2
console.log(m.has('name')) //true
//数组解构赋值
for(const [k,v] of m){
    console.log(k,v)
}
console 命令行工具 X clear

                    
>
console