简介

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

MapObject
默认值默认不蕴含任何值,只蕴含显式插入的键一个 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)