groupBy<K> method

Map<K, List<T>> groupBy<K>(
  1. K keySelector(
    1. T
    )
)

Groups list items by a key returned from keySelector.

Full Example:

final people = [
  {"name": "Alice", "city": "Tokyo"},
  {"name": "Bob", "city": "Osaka"},
  {"name": "Charlie", "city": "Tokyo"},
];

final grouped = people.groupBy((p) => p["city"]);

 grouped result:
{
  "Tokyo": [
    {"name": "Alice", "city": "Tokyo"},
    {"name": "Charlie", "city": "Tokyo"}
  ],
  "Osaka": [
    {"name": "Bob", "city": "Osaka"}
  ]
}

Implementation

Map<K, List<T>> groupBy<K>(K Function(T) keySelector) {
  final map = <K, List<T>>{};
  for (final item in this) {
    final key = keySelector(item);
    map.putIfAbsent(key, () => []).add(item);
  }
  return map;
}