All files / array/operator uniqueBy.ts

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

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 16    5x 8x 8x 8x 11x 11x 9x 9x     4x      
import {Dictionary, KeyProjection} from 'fnxt/fnxt-types';
 
export const uniqueBy = <E>(projection: KeyProjection<E>) => (array: E[]): E[] => {
  const map: Dictionary<boolean> = {};
  const result: E[] = [];
  for (const e of array) {
    const key = projection(e);
    if (!map[key]) {
      map[key] = true;
      result.push(e);
    }
  }
  return result;
};