Javascript 返回值为的JS映射构造函数的键
从JS映射构造函数检索密钥时遇到困难 假设您拥有以下代码:Javascript 返回值为的JS映射构造函数的键,javascript,Javascript,从JS映射构造函数检索密钥时遇到困难 假设您拥有以下代码: var myMap = new Map(); myMap.set('AK', 'Alaska'); myMap.set('CO', 'Colorado'); console.log(myMap.get('CO')) 此console.logs'Colorado'。我正试图找出如何做相反的事情,并使用值('Colorado')返回键('CO') 在一个完美的世界里,我可以做myMap.get('Colorado')返回'CO',但这
var myMap = new Map();
myMap.set('AK', 'Alaska');
myMap.set('CO', 'Colorado');
console.log(myMap.get('CO'))
此console.logs'Colorado'
。我正试图找出如何做相反的事情,并使用值('Colorado'
)返回键('CO'
)
在一个完美的世界里,我可以做
myMap.get('Colorado')
返回'CO'
,但这不起作用。你需要用缩写索引地图吗?如果没有,您可以通过另一种方式在其中设置数据:
myMap.set('Alaska', 'AK');
否则,您需要循环浏览地图的条目:
let entry;
for (entry of myMap.entries()) {
if (entry === 'CO') {
break;
}
}
当您具有映射到某个值的唯一键时,最好使用映射 假设在您的用例中键值对是不同的,我们可以编写一个助手来查找键值
function getKey(map, value) {
var found = Array.from(map.keys())
.find((key) => map.get(key) === value);
return found[0]; // returning undefined is just fine.
}
在一个完美的世界里,我可以只做
myMap.get('Colorado')
返回'CO',但这不起作用。这其实很好,这不起作用,想象一下,有一个键和一个值来自两个具有相同值的不同条目。那么使用两个映射有什么错呢?使用find而不是filter,否则即使已经找到了相应的键,您也会继续查找。是的。谢谢我会修改我的答案。@woulwafemisule谢谢!