Есть ли способ получить доступ к ключу объекта в соответствии с его значением?

#javascript

Вопрос:

Я хочу получить доступ к ключу объекта в соответствии со значением, которое он был выведен, например:

У меня есть этот объект

 var characters = {
    a: "0",
    b: "1",
    c: "2",
    d: "3",
    e: "4",
    f: "5",
    g: "6",
    h: "7",
    i: "8",
    j: "9"
 

И у меня есть эта сумма:

 var result = 2 2
 

Результат будет 4, поэтому я хотел бы вывести клавишу e в своей консоли. Я пытался использовать этот метод Object.keys() , но он просто возвращает значение ключа и не возвращает его в соответствии со значением.

Комментарии:

1. Как насчет Object.entries() этого ?

2. Почему бы просто не использовать массив и не получить значение по индексу?

3. Object.entries(characters).find(([,c]) => c == 4)?.[0]

Ответ №1:

Мы можем использовать Object.entries и Array.find, а также некоторое деструктурирование, чтобы найти правильный ключ, например:

 var characters = {
    a: "0",
    b: "1",
    c: "2",
    d: "3",
    e: "4",
    f: "5",
    g: "6",
    h: "7",
    i: "8",
    j: "9"
}

let value = 2   2;

// Use Array.find with == rather than strict equality, since we're comparing numbers and strings.
let [key, val ] = Object.entries(characters).find(([key, val]) => val == value);
console.log("Result key:", key);  

Ответ №2:

вы можете использовать функцию Object.entries и функцию Array.prototype.find, подобную этой:

 Object.entries(characters).find(el => el[1] === result.toString())[0]
 

Комментарии:

1. string === number всегда будет ложью!