uniqueBy<K> method

Iterable<E> uniqueBy<K>(
  1. K keySelector(
    1. E element
    )
)

Returns a new Iterable containing only the elements that have unique keys.

The keySelector function extracts the key used for comparison. Only the first element encountered for each unique key is kept.

Example:

final users = [User(id: 1), User(id: 2), User(id: 1)];
final unique = users.uniqueBy((u) => u.id); // Keeps first two users

Implementation

Iterable<E> uniqueBy<K>(K Function(E element) keySelector) {
  final Set<K> seenKeys = <K>{};
  final List<E> result = <E>[];

  for (final element in this) {
    final K key = keySelector(element);
    if (seenKeys.add(key)) {
      result.add(element);
    }
  }

  return result;
}