Лучший способ итерации и извлечения ключа / значения из карты в Dart? - PullRequest
1 голос
/ 14 июля 2020

GIVEN

Map<String, List<String>> где:

  • клавиша - это код команды
  • значение - список имен игроков.

КОГДА

Когда пользователь выбирает имя, мне нужно вывести код команды, сравнив в список игроков (могут быть повторяющиеся имена и другие вещи, которые я еще не полностью рассмотрел).

Я нашел что-то, что работает, но не уверен, что это работает хорошо, когда объем данных увеличивается .

//Team Map Example    
var teamMap = {
  "TeamFoo": ["Bob", "John", "Jill"],
  "TeamBar": ["Mike", "Fred"]
};

//Loop Example
teamMap.forEach((key, value) {
   if (value.indexOf(_lastName) >= 0) {
      teamName = key;
   }
});

Есть ли лучший способ написать эту функцию для повышения скорости или читаемости?

1 Ответ

1 голос
/ 14 июля 2020
• 1000 я бы сделал это.

Код:

String teamCode = teamMap.keys.firstWhere((key) => teamMap[key].contains(_lastName));

Пояснение:

teamMap.keys => возвращает список ключи карты

teamMap[key] => возвращает список игроков, соответствующих этому ключу

Для каждого ключа

проверьте, содержит ли соответствующий список _lastName teamMap[key].contains(_lastName));

Однако для обработки дубликатов я бы предложил добавить "#" с последующим количеством дубликатов. Если это не подходит для имен игроков, чем что-то другое, используя ваше воображение, чтобы удалить дубликаты.

дайте мне знать, если вы столкнетесь с какими-либо ошибками.

Кроме того, если вам нравится визуальная документация для общей карты / Список / установка методов Я бы порекомендовал эту страницу .

...