Flutter / Dart: Как получить доступ к одной записи на карте / объекте - PullRequest
0 голосов
/ 18 декабря 2018

Это может быть очень простой вопрос, но у меня проблемы с поиском ответа.У меня есть объект / карта, которую я не хотел бы итерировать, но получить доступ к определенному ключу / значению по индексу.

Например:

var _results = {
  'Key_1' : 'Value_1',
  'Key_2' : 'Value_2', 
};

Как получить доступ к индексу [1] key_2 и value_2?

Я пробовал _results[index], _results[index].value, _results[index].key и _results[index].toString(), но все возвращают ноль.

Ответы [ 4 ]

0 голосов
/ 14 марта 2019

Чтобы напечатать значение ключа, просто используйте:

void main(){

  var results = {
  'usd' : 3.80,
  'eur' : 4.10, 
  'gbp' : 4.90, 
  };

  print(results['usd']); //3.80
}
0 голосов
/ 18 декабря 2018

Карта по своей природе "неупорядочена", за исключением случайных реализаций.Так что нет «первой» пары ключ / значение, поэтому ваш первоначальный вопрос не имеет смысла.

0 голосов
/ 18 декабря 2018

Карта позволяет искать значения по ключам.Итак:

print(_results["Key_1"]);  // prints "Value_1"

Карта не является списком пар, вы не можете получить доступ по индексу.

Вы можете получить доступ к ключам, значениям и записям (парамключ и значение) как Iterable с .

for (var key in _results.keys) print(key); // prints Key_1 then Key_2
for (var value in _results.values) print(value); // prints Value_1 then Value_2
for (var entry in _results.entries) {
  print(entry.key);
  print(entry.value);
}

Вы даже можете преобразовать записи в список, если вы действительно хотите индексировать целым числом:

var entryList = _results.entries.toList();
print(entryList[0].key);  // prints "Key_1"

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

0 голосов
/ 18 декабря 2018

преобразовать значения в список:

var _list = _results.values.toList();

получить по индексу:

print(_list[1]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...