5 методов создания списка на основе свойств объекта в Dart

В Dart доступно несколько методов создания списка на основе свойств объекта. Если вы хотите извлечь определенные свойства из объектов или преобразовать все свойства в список, эта статья предоставит вам несколько подходов для достижения вашей цели. Мы рассмотрим пять различных методов вместе с примерами кода, которые помогут вам понять и эффективно их реализовать.

Метод 1: использование цикла for
Самый простой подход — перебрать каждый объект и извлечь нужные значения свойств в новый список. Вот пример:

class Person {
  String name;
  int age;
  Person(this.name, this.age);
}
void main() {
  List<Person> people = [
    Person('John', 25),
    Person('Alice', 30),
    Person('Bob', 28)
  ];
  List<String> names = [];
  for (var person in people) {
    names.add(person.name);
  }
  print(names); // Output: ['John', 'Alice', 'Bob']
}

Метод 2: использование map() и toList()
Dart предоставляет метод map(), который позволяет преобразовать каждый объект в определенное значение свойства. Затем вы можете преобразовать полученную итерацию в список, используя метод toList(). Вот пример:

void main() {
  List<Person> people = [
    Person('John', 25),
    Person('Alice', 30),
    Person('Bob', 28)
  ];
  List<String> names = people.map((person) => person.name).toList();
  print(names); // Output: ['John', 'Alice', 'Bob']
}

Метод 3: использование List.generate()
Другой подход — использовать метод List.generate(), который позволяет создать список, указав длину и генерируя каждый элемент на основе индекса.. Вот пример:

void main() {
  List<Person> people = [
    Person('John', 25),
    Person('Alice', 30),
    Person('Bob', 28)
  ];
  List<String> names = List.generate(
      people.length, (index) => people[index].name);
  print(names); // Output: ['John', 'Alice', 'Bob']
}

Метод 4: использование коллекции if
Если вы хотите фильтровать определенные свойства на основе условия, вы можете использовать синтаксис коллекции if в Dart. Это позволяет включать или исключать свойства из полученного списка. Вот пример:

void main() {
  List<Person> people = [
    Person('John', 25),
    Person('Alice', 30),
    Person('Bob', 28)
  ];
  List<String> names = [
    for (var person in people)
      if (person.age > 25) person.name
  ];
  print(names); // Output: ['Alice', 'Bob']
}

Метод 5: использование package:collection
Библиотека package:collectionв Dart предоставляет дополнительные служебные функции для работы с коллекциями. Одной из них является функция pluck(), которая позволяет извлечь определенное свойство из списка объектов. Вот пример:

import 'package:collection/collection.dart';
void main() {
  List<Person> people = [
    Person('John', 25),
    Person('Alice', 30),
    Person('Bob', 28)
  ];
  List<String> names = people.pluck('name').toList();
  print(names); // Output: ['John', 'Alice', 'Bob']
}

В этой статье мы рассмотрели пять различных методов создания списка на основе свойств объекта в Dart. Используя эти подходы, вы можете легко извлечь определенные свойства или преобразовать все свойства в список. Предпочитаете ли вы простой цикл for, комбинацию map()и toList(), List.generate(), синтаксис коллекции if или package:collection, у вас есть различные варианты на выбор в зависимости от ваших конкретных требований. Поэкспериментируйте с этими методами и используйте их гибкость, чтобы улучшить свои навыки программирования на Dart.