1var baseExtremum = require('./_baseExtremum'), 2 baseIteratee = require('./_baseIteratee'), 3 baseLt = require('./_baseLt'); 4 5/** 6 * This method is like `_.min` except that it accepts `iteratee` which is 7 * invoked for each element in `array` to generate the criterion by which 8 * the value is ranked. The iteratee is invoked with one argument: (value). 9 * 10 * @static 11 * @memberOf _ 12 * @since 4.0.0 13 * @category Math 14 * @param {Array} array The array to iterate over. 15 * @param {Function} [iteratee=_.identity] The iteratee invoked per element. 16 * @returns {*} Returns the minimum value. 17 * @example 18 * 19 * var objects = [{ 'n': 1 }, { 'n': 2 }]; 20 * 21 * _.minBy(objects, function(o) { return o.n; }); 22 * // => { 'n': 1 } 23 * 24 * // The `_.property` iteratee shorthand. 25 * _.minBy(objects, 'n'); 26 * // => { 'n': 1 } 27 */ 28function minBy(array, iteratee) { 29 return (array && array.length) 30 ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt) 31 : undefined; 32} 33 34module.exports = minBy; 35