简介
Map 映射属于关联数组,即若干个键值对的汇合。
创立一个 Map 实例
能够将一个二元数组(键值对)作为元素的数组传入构造函数,该数组内的元素会以数组程序进行解决退出到映射对象中,如果存在雷同的键,则依照 FIFO(先进先出) 准则,即前面会笼罩后面的。
const map = new Map([['key1','value1'],['key2','value2'])
实例的属性和办法
属性 / 办法 | 形容 |
---|---|
map.size | 映射中键值对的数量 |
map.has(key) | 查看映射中是否含有某一个键值对 |
map.get(key) | 获取映射中键对应的值 |
map.set(key,value) | 增加或者批改键值对,返回 map(即能够通过. 运算符进行间断操作) |
map.delete(key) | 移除映射中的某一键值对 |
map.clear() | 清空映射中的所有键值对 |
map.forEach(fn) | 遍历映射中所有的值 |
map.entries() | 返回一个以二元数组(键值对)作为元素的可迭代对象 |
map.keys() | 返回一个以后映射所有键作为元素的可迭代对象 |
map.values() | 返回一个以后映射所有值作为元素的可迭代对象 |
比拟 Map 与 Object
Map | Object | |
---|---|---|
默认值 | 默认不蕴含任何值,只蕴含显式插入的键 | 一个 Object 有一个原型,原型上的键名有可能和本人对象上设置的键名抵触 |
键的类型 | 任意 | String 或 Symbol(注:你能够应用其余类型的键名,然而最终 会隐式转换为字符串) |
程序性 | 按插入的程序 | 从 ES6 开始,String 和 Symbol 键是按程序保存起来的,然而通过隐式转换保留成 String 的键就是乱序的 |
长度 | 键值对个数通过 size 属性获取 | 键值对个数只能手动计算 |
迭代性 | 可迭代(for entry of map) | 不可迭代,需借助 Object.entries()/Object.keys()/Object.values() |
JSON 序列化 | 以关联数组即二元数组(键值对)的模式表白,这种序列化的后果的意义在于能够在通过网络等形式传输了后果后,再通过 JSON.parse 办法间接将解析后果传入 Map 构造函数 | 规范的对象字面量模式 |
例:map 的 JSON 序列化
const map = new Map();
map.set('k1','v1').set('k2','v2');
// const str = JSON.stringify(map)
const str = JSON.stringify(Array.from(map))
const map2 = new Map(JSON.parse(str))
console.log(map2)