Map是像object一样带有key、value的集合,只是最大的差别是Map允许任何类型的key值,底下为属性与方法:
举个简单的例子:
let map = new Map();
map.set("name", "John");
map.set(1, "数字");
map.set('1', "字串");
map.set(true, "布林值");
console.log(map.get(1)); // 数字
console.log(map.get('1')); // 字串
console.log(map.size); // 4
因为Map允许任何的key值,所以上面的1(string与number)分别显示出不同的值,而object一律都会转为字串。
也能将object设定为key:
let cat = { name: "white cat" };
let catMap = new Map();
// cat 是 catMap 中的key
catMap.set(cat, 123);
console.log( catMap.get(cat) ); // 123
如果是object的话,因为会把key转换为字串的关系,以上面的例子就会变成"[object,objetc]",并不是我们想要的结果。
实际例子:
let catMap = new Map([
['white', 5],
['black', 4],
['grey', 6]
])
for(let color of catMap.keys()) {
console.log(color)
}
for(let entry of catMap.entries()) { //let entry of catMap 结果相同
console.log(entry)
}
catMap.forEach((value,key) => console.log(value,key))
像上面举的例子,new Map可以透过放入一个数组,每个element以[key,value]的形式,来建立一个map,所以可以配合Object.keys()来达到我们要的结果:
let obj = {
name: "David",
height:180,
weight:70
}
let map = new Map(Object.entries(obj));
console.log(map.get('height')); // 180
Object.fromEntries()则是反向操作,把[key,value]的array,转变为object的形式:
let map = new Map();
map.set("name", "John");
map.set("height", 175);
map.set('weight', 60);
let obj = Object.fromEntries(map.entries());
console.log(obj)
//
obj = {
height: 175
name: "John"
weight: 60
}
>>: IT 铁人赛 k8s 入门30天 -- day22 k8s 资源管理工具 kustomize
这篇文主要是介绍在 Flutter 中如何串接 restful api ,主要是使用 Dio(意外的...
CRUD新增、删除、修改、显示功能是一个完整的线上系统不可或缺的功能。 昨天我们完成了更新 tick...
Powershell 的基础内容已经讲解的差不多了,从今天开始,我们将学习通过脚本来自动化执行批量操...
KubeEdge 使用心得 KubeEdge的使用导向应是以"云边协同"、&qu...
真正的重头戏来罗!身为合格的系统分析师,决定你的身价如何的重点:商业思维!这是很多工程师转分析师能否...