mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-01-31 15:27:50 +00:00
34 lines
1.1 KiB
JavaScript
34 lines
1.1 KiB
JavaScript
import arrayExtremum from './arrayExtremum';
|
|
import baseCallback from './baseCallback';
|
|
import baseExtremum from './baseExtremum';
|
|
import isArray from '../lang/isArray';
|
|
import isIterateeCall from './isIterateeCall';
|
|
import toIterable from './toIterable';
|
|
|
|
/**
|
|
* Creates a `_.max` or `_.min` function.
|
|
*
|
|
* @private
|
|
* @param {Function} comparator The function used to compare values.
|
|
* @param {*} exValue The initial extremum value.
|
|
* @returns {Function} Returns the new extremum function.
|
|
*/
|
|
function createExtremum(comparator, exValue) {
|
|
return function(collection, iteratee, thisArg) {
|
|
if (thisArg && isIterateeCall(collection, iteratee, thisArg)) {
|
|
iteratee = undefined;
|
|
}
|
|
iteratee = baseCallback(iteratee, thisArg, 3);
|
|
if (iteratee.length == 1) {
|
|
collection = isArray(collection) ? collection : toIterable(collection);
|
|
var result = arrayExtremum(collection, iteratee, comparator, exValue);
|
|
if (!(collection.length && result === exValue)) {
|
|
return result;
|
|
}
|
|
}
|
|
return baseExtremum(collection, iteratee, comparator, exValue);
|
|
};
|
|
}
|
|
|
|
export default createExtremum;
|