Arhn - архитектура программирования

Можно ли проверить, содержит ли карта JS значение, и вернуть его ключ

Я пытаюсь найти способ просмотреть значение массива Map, чтобы узнать, существует ли оно, если оно возвращает ключ Map в качестве переменной. это немного поставило меня в тупик, так как я не очень много использую javascript.

const map = new Map([
        ["KEY1", ["dummy1","dummy2","dummy3"]],
        ["KEY2", ["dummy4","dummy5","dummy6","dummy7"]],
        ["KEY3", ["dummy8","dummy9"]],
    ]);

так скажем, у меня есть dummy4 как переменная, я хочу посмотреть на карту и увидеть ее там в массиве значений с ключом2 и вернуть ключ в новую переменную жала KEY2


  • но KEY2 не содержит значения key2 18.12.2020
  • Если вы выполняете много поисковых запросов и вам нужно, чтобы это было быстро, подумайте об инвертировании структуры. Составьте таблицу формы value => key. 18.12.2020
  • Можете ли вы объяснить, почему вы это делаете? Это полностью противоречит тому, как карта предназначена для использования. 18.12.2020
  • именно то, что сказал @tadman. если это разовая операция или для целей отладки, это, вероятно, нормально, но если это обычный способ использования Карт или если операция появляется в цикле, вам следует пересмотреть структуру. 18.12.2020
  • Я делаю это таким образом, чтобы искать определенное значение, которое может иметь много терминов, это может быть не лучший способ, которым я придумал, что в основном многие значения могут быть введены на вход, но все они относятся только к одному выходу 18.12.2020

Ответы:


1

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

Основываясь на комментарии, я собираюсь порекомендовать другой способ построения вашей структуры поиска -

const terms =
  [ ["KEY1", ["dummy1","dummy2","dummy3"]]
  , ["KEY2", ["dummy4","dummy5","dummy6","dummy7"]]
  , ["KEY3", ["dummy8","dummy9"]]
  ]
  
const dict =
  new Map(terms.flatMap(([ k, vs ]) => vs.map(v => [ v, k ])))
  
console.log(dict.get("dummy2"))
console.log(dict.get("dummy5"))
console.log(dict.get("dummy7"))
console.log(dict.get("dummy9"))
console.log(dict.get("dummy0"))

Выход -

KEY1
KEY2
KEY2
KEY3
undefined

Это более эффективно, поскольку структура Map обеспечивает мгновенный поиск любого значения и не требует полного .entries сканирования.

Map
  { "dummy1" -> "KEY1"
  , "dummy2" -> "KEY1"
  , "dummy3" -> "KEY1"
  , "dummy4" -> "KEY2"
  , "dummy5" -> "KEY2"
  , "dummy6" -> "KEY2"
  , "dummy7" -> "KEY2"
  , "dummy8" -> "KEY3"
  , "dummy9" -> "KEY3"
  }
18.12.2020

2

Просмотрите записи:

function findValue(map, value) {
    for (const [k, arr] of map.entries()) {
        if (arr.includes(value)) {
            return k;
        }
    }
}
18.12.2020
  • это соответствует требованиям OP, но неэффективно и неестественно использует Map 18.12.2020
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..