📜  dart 按属性过滤 - Dart (1)

📅  最后修改于: 2023-12-03 15:14:36.511000             🧑  作者: Mango

Dart 按属性过滤

在 Dart 中,我们可以使用 where 过滤器函数按照对象属性值筛选数据集合。下面将介绍如何使用 where 进行按属性过滤。

基本语法
Iterable<T> where(bool test(T element))
示例代码

考虑一个简单的 Person 类:

class Person {
  String name;
  int age;

  Person(this.name, this.age);
}

假设我们有一个 List<Person> 的数据集并且我们要筛选年龄大于 25 的人,可以使用以下代码:

void main() {
  final people = [
    Person('Alice', 23),
    Person('Bob', 28),
    Person('Charlie', 31),
    Person('David', 22),
    Person('Emily', 26),
  ];

  final result = people.where((person) => person.age > 25);

  print(result);
  // Output: (Person: Bob, age: 28), (Person: Charlie, age: 31), (Person: Emily, age: 26)
}

在上面的代码中,我们使用 where 函数并传递一个匿名函数作为参数来进行筛选。匿名函数接收一个元素并返回一个 bool 值,用于测试该元素是否符合条件。在本例中,匿名函数使用 person.age > 25 来测试年龄是否大于 25。

组合筛选条件

我们可以使用链式调用来对数据进行多重过滤。例如,我们可以在上面的示例代码中添加一个条件来过滤掉年龄小于 30 的人:

final result = people.where((person) => person.age > 25).where((person) => person.age < 30);
结论

在 Dart 中,使用 where 过滤器函数来按属性过滤数据集合是一种非常有用的技术。通过使用此函数以及链式调用来组合条件,我们可以筛选出满足我们要求的数据集合。