@prukon
Начинающий разработчик

Как найти соответствие ключ-значение = значение ключ в массиве?

Есть массив:
arr = [21: 31, 22: 14, 23: 1, 24: 35, 25: 6, 26: 16, 27: 13, 28: 78, 29: 1,30: 42, 31: 21, 32: 31, 33: 15,34: 20, 35: 24]

задача найти пары, где ключ:значение = значение:ключ.
Таким образом должны быть найдены пары в данном массиве 24: 35, 21: 31, потому что в массиве присутствуют пары: 24: 35, 35: 24 и 21: 31, 31: 21

Результат записать двумерный массив следующего вида:
[[24: 35], [21: 31]]
  • Вопрос задан
  • 135 просмотров
Пригласить эксперта
Ответы на вопрос 1
iCoderXXI
@iCoderXXI
React.JS/FrontEnd engineer
Для начала не бывает таких структур данных в JS.

const findDupes = data => {
  const tmp = data.reduce((a, e) => {
    const ee = Object.entries(e).pop();
    const keys = [`${ee[0]}_${ee[1]}`, `${ee[1]}_${ee[0]}`];
    if (!a[keys[0]]) a[keys[0]] = { e, s: [] };
    if (a[keys[1]]) a[keys[1]].s.push(e);
    return a;
  }, {})

  return Object.entries(tmp).filter(e => e[1].s.length > 0).map(e => e[1].e);
}

console.log(findDupes(data));


Вот как-то так я это вижу. На вход надо подавать массив объектов типа такого:

const data = [{ 21: 31 }, { 22: 14 }, ...];

ЗЫ: Код может работать не совсем корректно, если важен порядок детектирования элементов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы