#list #dictionary #dart #flutter #type-conversion
#Список #словарь #dart #флаттер #преобразование типа
Вопрос:
Я некоторое время безуспешно искал. Я пытаюсь преобразовать карту в список (отбрасывая ключ).
Конечно, я могу сделать
var addictionList = new List<AddictionDay>();
dataMan.forEach((String date, AddictionDay day) {
addictionList.add(day);
});
но есть ли более прямой подход, например
var addictionList = dataMan.toList();
?
map
функция Map, похоже, не очень помогает, потому что она принимает только MapEntry<K2, V2>
в качестве параметра, так что это бесполезно. Довольно удивлен, что никто не задавал этот вопрос раньше.
Я также думал о новом расширении класса Map, но прямо сейчас я просто ищу какой-нибудь собственный способ сделать это, если он существует.
Ответ №1:
Класс Map имеет свойство entries, которое возвращает записи карты в виде итерации, для которой вы можете использовать функцию map для создания списка необходимых вам элементов.
var addictionList = dataMan.entries.map((MapEntry mapEntry) => mapEntry.value).toList();
mapEntry.key
является типом String
и mapEntry.value
является типом AddictionDay
.
Комментарии:
1. .map возвращает карту<K2, V2>, которая не имеет . Определен ToList
2. И .map ожидает MapEntry<K2, V2> в качестве параметра.. Чего я не понимаю?
3. ошибка: возвращаемый тип ‘AddictionDay’ не является ‘MapEntry’, как определено анонимным закрытием. ошибка: метод ‘ToList’ не определен для класса ‘Map’.
4. Вы должны включить код, который показывает объявление ‘DataMan’.
5. У меня получилось с ним работать
List<AddictionDay> addictionList = List<AddictionDay>.from(dataMan.entries.map((MapEntry mapEntry) => mapEntry.value).toList());
, поскольку он вернул List<dynamic>, который я не смог явно преобразовать в List<AddictionDay>
Ответ №2:
Вам нужно это или что-то более сложное?
var _map = {1: 'one', 2: 'two', 3: 'three'};
var values =_map.values.toList();
print(values);
Результат:
[one, two, three]