根据匹配的对象属性从列表创建列表
Posted
技术标签:
【中文标题】根据匹配的对象属性从列表创建列表【英文标题】:Create Lists from List based on Matching Object Properties 【发布时间】:2019-12-13 11:27:55 【问题描述】:我有一个包含多个属性的对象列表。我希望将列表分成几个列表,这些列表由具有相同子属性的对象组成。
这是一个假设的例子,假设我有一个Cars
的列表。每个Car
都有属性:id
、manufacturerId
和color
。
我想为具有匹配manufacturerId
属性的人创建Cars
列表。
我尝试在list.forEach
中使用list.where
来创建新的子列表,但是我得到了重复的列表,因为当我比较的属性(A)与另一个属性(B)匹配时,我得到另一个子列表列出时间:
B = A。
【问题讨论】:
【参考方案1】:你可以从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
的列表。
【讨论】:
以上是关于根据匹配的对象属性从列表创建列表的主要内容,如果未能解决你的问题,请参考以下文章