NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/@antv/util/lib/math/min-by.js
2023-09-14 14:47:11 +08:00

44 lines
937 B
JavaScript

var isArray = require('../type/is-array');
var isFunction = require('../type/is-function');
var each = require('../each');
/**
* @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 }
*/
var minBy = function minBy(arr, fn) {
if (!isArray(arr)) {
return undefined;
}
var min = arr[0];
var minData = void 0;
if (isFunction(fn)) {
minData = fn(arr[0]);
} else {
minData = arr[0][fn];
}
var data = void 0;
each(arr, function (val) {
if (isFunction(fn)) {
data = fn(val);
} else {
data = val[fn];
}
if (data < minData) {
min = val;
minData = data;
}
});
return min;
};
module.exports = minBy;