splitBy method

List<List<T>> splitBy(
  1. int keyFunction(
    1. T
    )
)

Splits the list into sublists based on the provided keyFunction. Each sublist contains elements that have the same key value. Returns a list of sublists.

Implementation

List<List<T>> splitBy(int Function(T) keyFunction) {
  var r = <List<T>>[];
  var l = toList();
  var keys = l.map(keyFunction).distinct().toList();
  for (var key in keys) {
    r.add(l.where((e) => keyFunction(e) == key).toList());
  }
  return r;
}