NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/@antv/util/lib/math/max-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 maximum value.
* @example
*
* var objects = [{ 'n': 1 }, { 'n': 2 }];
*
* maxBy(objects, function(o) { return o.n; });
* // => { 'n': 2 }
*
* maxBy(objects, 'n');
* // => { 'n': 2 }
*/
var maxBy = function maxBy(arr, fn) {
if (!isArray(arr)) {
return undefined;
}
var max = arr[0];
var maxData = void 0;
if (isFunction(fn)) {
maxData = fn(arr[0]);
} else {
maxData = arr[0][fn];
}
var data = void 0;
each(arr, function (val) {
if (isFunction(fn)) {
data = fn(val);
} else {
data = val[fn];
}
if (data > maxData) {
max = val;
maxData = data;
}
});
return max;
};
module.exports = maxBy;