如何解决地图是对象,但对象内的值的类型是什么
我最近在学习地图,当我尝试下面的代码时:
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
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。