我们都知道
- 正常对象的key 的类型就是字符串 只能写普通类型 类似string 布尔值 null undefined number 不能是引用类型类似 object 数组
- Map对象的健可以是任意类型
那我们怎么才能获取到map的key呢?
我这里列举两种方法
首先 先创建一个map集合
const showDemo =new Map([['a',100],['b',8],['c',1]])
const obj={ d:1}
showDemo.set(obj,111) //向showDemo里插入一个key为{d : 1} 的值
- 原生方法
我们直接用原生方法 showDemo.keys()就可以获取到
用原生方法获取到key的集合是个对象
获取key为{ d: 1 }的方法
for (const key of showDemo.keys()) {
if (key === obj) {
console.log(key);
}
}
在上面的代码中,我们使用for...of
循环遍历showDemo.keys()
返回的键。然后,我们将每个键与{ d: 1 }
进行比较,如果相等,则打印出该键。
我们也可以直接通过
Array.from(showDemo.keys())
[...showDemo.keys()]
我们可以通过这两种方式 转成数组 这样也可以轻松拿到
- 循环遍历
showDemo.forEach(function(e,key){
console.log(e,key)
})
在这种方法中 获取key为{ d: 1 }的方法
const list = [] as any
showDemo.forEach(function (item, key, object) {
list.push(key)
})
这样也可以拿到
以上我们可以得出:
showDemo.keys() 返回并不是一个数组 而是一个对象
想取值的话 最好还是先转成数组