minBy<T, R extends Comparable<Object>> function

T? minBy<T, R extends Comparable<Object>>(
  1. Iterable<T> iterable,
  2. R accessor(
    1. T
    )
)

Returns the minimum value using an accessor function.

Implementation

T? minBy<T, R extends Comparable<Object>>(
  Iterable<T> iterable,
  R Function(T) accessor,
) {
  final iterator = iterable.iterator;
  if (!iterator.moveNext()) return null;

  T minElement = iterator.current;
  R minValue = accessor(minElement);

  while (iterator.moveNext()) {
    final value = accessor(iterator.current);
    if (value.compareTo(minValue) < 0) {
      minElement = iterator.current;
      minValue = value;
    }
  }
  return minElement;
}