You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
814 B
33 lines
814 B
import isArray from './is-array';
|
|
import isFunction from './is-function';
|
|
/**
|
|
* @param {Array} arr The array to iterate over.
|
|
* @param {Function} [fn] The iteratee invoked per element.
|
|
* @return {*} Returns the minimum value.
|
|
* @example
|
|
*
|
|
* var objects = [{ 'n': 1 }, { 'n': 2 }];
|
|
*
|
|
* minBy(objects, function(o) { return o.n; });
|
|
* // => { 'n': 1 }
|
|
*
|
|
* minBy(objects, 'n');
|
|
* // => { 'n': 1 }
|
|
*/
|
|
export default (function (arr, fn) {
|
|
if (!isArray(arr)) {
|
|
return undefined;
|
|
}
|
|
var minItem;
|
|
var min = Infinity;
|
|
for (var i = 0; i < arr.length; i++) {
|
|
var item = arr[i];
|
|
var v = isFunction(fn) ? fn(item) : item[fn];
|
|
if (v < min) {
|
|
minItem = item;
|
|
min = v;
|
|
}
|
|
}
|
|
return minItem;
|
|
});
|
|
//# sourceMappingURL=min-by.js.map
|