根据匹配对象属性从列表创建列表

时间:2019-08-05 23:14:15

标签: list flutter dart

我有一个包含几个属性的对象列表。我希望将列表分成几个由具有相同子属性的对象组成的列表。

这是一个假设的示例,假设我有一个Cars的列表。每个Car具有以下属性:idmanufacturerIdcolor

我想为具有匹配的Cars属性的用户创建manufacturerId的列表。

我尝试在list.where中使用list.forEach创建新的子列表,但是我得到了重复的列表,因为当我要与之比较的属性(A)与另一个属性(B)匹配时,我在以下情况下获得另一个子列表:

  

B = A。

1 个答案:

答案 0 :(得分:2)

您可以使用package:collection中的groupBy

var carsByManufacturer = groupBy(cars, (car) => car.manufacturerId);

这将创建一个Map,其中键为manufacturerID,值是该制造商的汽车清单。

然后,

for (final manufacturerEntry in carsByManufacturer) {
      final key = manufacturerEntry.key;
      final value = manufacturerEntry.value;
      final listOfCarsFromSameManufactuer = List.from(entry.value);
      ...
}

您现在将拥有一个名为listOfCarsFromSameManufactuer的列表。