All files / array/operator minBy.ts

100% Statements 10/10
100% Branches 2/2
100% Functions 2/2
100% Lines 8/8

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    1x 1x   1x 4x 4x 2x 2x     1x    
import {NumberProjection} from 'fnxt/fnxt-types';
 
export const minBy = <E>(projection: NumberProjection<E>) => (array: E[]): E | undefined => {
  let minProjection = Infinity;
  let minItem;
  for (const item of array) {
    const p = projection(item);
    if (p < minProjection) {
      minProjection = p;
      minItem = item;
    }
  }
  return minItem;
};