Skip to content
Permalink
Newer
Older
100644 34 lines (32 sloc) 991 Bytes
Ignoring revisions in .git-blame-ignore-revs.
1
var 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
*/
28
function minBy(array, iteratee) {
29
return (array && array.length)
30
? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)
31
: undefined;
32
}
33
34
module.exports = minBy;