Javascript 返回值为的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',但这

从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'
,但这不起作用。

你需要用缩写索引地图吗?如果没有,您可以通过另一种方式在其中设置数据:

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谢谢!