Как получить конкретный ключ от объекта карты в JavaScript - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть объект карты, и я хотел бы получить значение определенного ключа (значение самого ключа) из объекта Map, скажем, мы хотим получить «правильный»

мы можем получитьзначения «правильного» ключа: 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 голосов
/ 19 сентября 2019

Чтобы получить ключ на основе значения, вы можете перебирать записи на карте, используя 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));
0 голосов
/ 19 сентября 2019

Вы можете получить значения ключей следующим образом, чтобы получить все ключи объекта карты:

question.keys();
0 голосов
/ 19 сентября 2019

Если ваш вариант использования просто для проверки существования ключа, просто используйте has, но если вы хотите вернуть ключ, если он представляет еще какое-то другое значение, вы можете использовать hasдля проверки наличия или отсутствия ключа, здесь getKey функция проверки наличия ключа на карте возвращает этот ключ, в противном случае возвращается 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()], чтобы получить массив ключей, а затем выполнить итерацию и найти, найдено ли значение или нет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...