LINUX.ORG.RU

Как получить индекс языка из объекта вида {«0»:«Eng», «1»:«Rus», «2»:«Ger»} ?

 


0

1

Есть объект

a={"0":"Eng", "1":"Rus", "2":"Ger"};


Имея b=«Rus», надо получить число 1.

Нужен краткий код, желательно в одну строку, без циклов, какой-нибудь прямой командой, без вызова самодельной функции. Возможно ли такое?

★★★★★

Чтобы без циклов - храни так же и обратное соответствие:

a={"0":"Eng", "Eng": "0", ...};

Ja-Ja-Hey-Ho ★★★★★
()
Object.entries(obj).find(x => x[1] === b)[0]

Пример:

Object.entries({"0":"Eng", "1":"Rus", "2":"Ger"}).find(x => x[1] === 'Rus')[0]

Альтернативно:

Object.keys(obj).find(k => obj[k] === b)

ChALkeR ★★★★★
()
Последнее исправление: ChALkeR (всего исправлений: 5)
Ответ на: комментарий от anonymous

А кто просил без циклов?

Объекты не хранят обратного хэша от значений к ключам, без перебора всех ключей ты никуда не уедешь тут.

ChALkeR ★★★★★
()
Ответ на: комментарий от utf8nowhere

А. Мне казалось, он это касательно компактности кода, а не об алгоритмической сложности. По сложности тут ниже O(n) никогда не будет, если не использовать другие структуры в момент _добавления_ этих элементов вместо штатного объекта жс.

ChALkeR ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.