如何通过值获取 JavaScript“映射”中的键?

新手上路,请多包涵

我有一个像这样的 JavaScript“地图”

 let people = new Map();
people.set('1', 'jhon');
people.set('2', 'jasmein');
people.set('3', 'abdo');

我想要一些方法通过它的值返回一个键。

 let jhonKey = people.getKey('jhon'); // jhonKey should be '1'

原文由 Engineer Passion 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 291
2 个回答

您可以将其转换为条目数组(使用 [...people.entries()] )并在该数组中搜索它。

 let people = new Map();
people.set('1', 'jhon');
people.set('2', 'jasmein');
people.set('3', 'abdo');

let jhonKeys = [...people.entries()]
        .filter(({ 1: v }) => v === 'jhon')
        .map(([k]) => k);

console.log(jhonKeys); // if empty, no key found otherwise all found keys.

原文由 Nina Scholz 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以使用 for..of 循环直接遍历 map.entries 并获取密钥。

 function getByValue(map, searchValue) {
  for (let [key, value] of map.entries()) {
    if (value === searchValue)
      return key;
  }
}

let people = new Map();
people.set('1', 'jhon');
people.set('2', 'jasmein');
people.set('3', 'abdo');

console.log(getByValue(people, 'jhon'))
console.log(getByValue(people, 'abdo'))

原文由 Rajesh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题