如何从javascript中的Map对象获取特定键

时间:2019-09-19 01:08:38

标签: javascript ecmascript-6 key

我有一个地图对象,我想从地图对象中获取特定键的值(它本身的键的值) 假设我们要获得“正确”

我们可以通过以下方法获取“正确”键的值:  question.get('correct') // return 3 但是我想要 :  someCode //return 'correct'

const question = new Map();

question.set('question','What is the latest version of javasript ?')
question.set(1,'es4')
question.set(2,'es5')
question.set(3,'es6')
question.set('correct',3)
question.set(true , 'correct Answer');
question.set(false , 'wrong Answer')

3 个答案:

答案 0 :(得分:0)

如果您的用例仅是测试密钥的存在,则只需使用has,但是如果您希望在密钥还存在其他值的情况下找回密钥,则可以使用has进行测试键是否存在,这里的getKey函数检查键是否在Map上返回该键,否则返回Not found

const question = new Map();

question.set('question','What is the latest version of javasript ?')
question.set(1,'es4')
question.set(2,'es5')
question.set(3,'es6')
question.set('correct',3)
question.set(true , 'correct Answer');
question.set(false , 'wrong Answer')

let getKey = key => question.has(key) ? key : 'Not found'

console.log(getKey('correct'))
console.log(getKey('randome key'))

您甚至可以使用[...Map.keys()]来获取键数组,然后进行迭代并查找是否找到了值

答案 1 :(得分:0)

要获取基于值的键,您可以使用Map.entries()遍历地图条目,并在找到键后返回键。

const question = new Map();

question.set('question','What is the latest version of javasript ?');
question.set(1,'es4');
question.set(2,'es5');
question.set(3,'es6');
question.set('correct',3);
question.set(true , 'correct Answer');
question.set(false , 'wrong Answer');

function getKey(map, input) {
  for (let [key, value] of map.entries()) {
     if (value === input) {
       return key;
     }
  }
  
  return "Not found";
}

console.log(getKey(question, 3));
console.log(getKey(question, 2));

答案 2 :(得分:0)

您可以按以下方式获取键的值,这将获取地图对象的所有键:

question.keys();