All files / array/operator maxBy.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 16    1x 1x   1x 4x 4x 2x 2x     1x      
import {NumberProjection} from 'fnxt/fnxt-types';
 
export const maxBy = <E>(projection: NumberProjection<E>) => (array: E[]): E | undefined => {
  let maxProjection = -Infinity;
  let maxItem;
  for (const item of array) {
    const p = projection(item);
    if (p > maxProjection) {
      maxProjection = p;
      maxItem = item;
    }
  }
  return maxItem;
};