关于javascript:ES6之Map

简介

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)

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理