ts_temp/array/maxBy.js
import curryN from '../function/curryN';
/**
* Return max value in array, depending on result of calling `fn`
*
* @param {Function} fn The function invoked per element.
* @param {Array} arr
* @returns {*} Returns the maximum value.
* @example
*
* var objects = [{ 'n': 1 }, { 'n': 2 }];
*
* maxBy(o => o.n, objects); // => { 'n': 2 }
*
*/
export default curryN(2, (fn, arr = []) => {
let result;
let max = -Infinity;
for (let i = 0; i < arr.length; i++) {
const computed = fn(arr[i], i, arr);
if (computed > max) {
max = computed;
result = arr[i];
}
}
return result;
});