You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

14 lines
293 B

  1. // @flow
  2. export default function uniqueBy<T>(arr: Array<T>, fn: T => any): Array<T> {
  3. const identifiers = new Set();
  4. return arr.filter(item => {
  5. const identifier = fn(item);
  6. if (!identifiers.has(identifier)) {
  7. identifiers.add(identifier);
  8. return true;
  9. }
  10. });
  11. }