Как получить ключи карты по значениям в дартс? - PullRequest
0 голосов
/ 28 августа 2018

На языке дартс как получить ключи MAP по значениям?

У меня есть карта типа;

{
  "01": "USD",
  "17": "GBP",
  "33": "EUR"
}

И мне нужно использовать значения, чтобы получить ключи. Как мне это сделать?

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

Если вы будете делать это несколько раз для одних и тех же данных, вы должны создать обратную карту, чтобы вы могли выполнять простой поиск по ключу вместо повторных линейных поисков. Вот пример обращения карты (могут быть более простые способы сделать это):

main() {
  var orig = {"01": "USD", "17": "GBP", "33": "EUR"};
  var reversed = Map.fromEntries(orig.entries.map((e) => MapEntry(e.value, e.key)));
  for (var kv in reversed.entries) {
    print(kv);
  }
}

Редактировать: да, карта может быть просто:

var reversed = orig.map((k, v) => MapEntry(v, k));

Наконечник шляпы Джо Конвею на блеске. Спасибо.

0 голосов
/ 04 августа 2019

Вы можете сделать следующее:

var mapper = { 
              '01' : 'USD',
               '17' : 'GBP'     } 

for(var val in mapper.keys){

  switch(mapper[val]){

        case 'USD' : {
                             print('key for ${mapper[val]} is : ' '${val}');  
            }

          break;

        case 'GBP' : {
                             print('key for ${mapper[val]} is : ' '${val}');   
               } 

        }
          }
0 голосов
/ 28 августа 2018
var usdKey = curr.keys.firstWhere(
    (k) => curr[k] == 'USD', orElse: () => null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...