问题描述
我最近在学习地图,当我尝试下面的代码时:
let a = [
[false,1],['1','str1'],[1,'num1'],[true,'bool1']
]
let map1 = new Map(a);
console.log(map1);
它输出我:
Map { false => 1,'1' => 'str1',1 => 'num1',true => 'bool1' }
所以我可以看到它是一个对象(由于 {})但是花括号内的值的类型是什么。我无法理解。所以请任何人告诉我值的类型是什么,我可以在不使用 get 方法的情况下从键中获取值。
顺便说一下,我使用 node js 来执行代码。
解决方法
您看到的输出是一个格式约定,用于在控制台中检查时如何显示地图。映射实际上并不将键和值保存为自己的属性 - 相反,键和值被保存在内部,仅对 Map 实现的内部可用,它通过各种 Map 公开它们.values()
、.keys()
、.get()
等方法。
我可以在不使用 get 方法的情况下从键中获取值吗?
我想您可以使用 .entries()
将 Map 转换为一个数组,然后在该数组中查找匹配的键:
let a = [
[false,1],['1','str1'],[1,'num1'],[true,'bool1']
]
let map1 = new Map(a);
const entries = [...map1.entries()];
const entry = entries.find(e => e[0] === 1);
console.log(entry[1]);
但这真的很奇怪。
没有使用 Map 的内置方法之一,就无法在 Map 上获取保存的值 - 但没关系,因为您应该总是使用处理 Map 的内置方法。继续使用.get
。