All files / array/operator distinctBy.ts

100% Statements 9/9
100% Branches 2/2
100% Functions 2/2
100% Lines 7/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15    3x 6x 6x 3x 3x 2x     2x        
import {Dictionary, KeyProjection} from 'fnxt/fnxt-types';
 
export const distinctBy = <E>(projection: KeyProjection<E>) => (array: E[]): E[] => {
  const set: Dictionary<E> = {};
  for (const e of array) {
    const key = projection(e);
    if (set[key] === undefined) {
      set[key] = e;
    }
  }
  return Object.values(set);
 
};