UNPKG

1.12 kBJavaScriptView Raw
1"use strict";
2exports.__esModule = true;
3var each_1 = require("./each");
4var is_array_1 = require("./is-array");
5var is_function_1 = require("./is-function");
6/**
7 * @param {Array} arr The array to iterate over.
8 * @param {Function} [fn] The iteratee invoked per element.
9 * @return {*} Returns the maximum value.
10 * @example
11 *
12 * var objects = [{ 'n': 1 }, { 'n': 2 }];
13 *
14 * maxBy(objects, function(o) { return o.n; });
15 * // => { 'n': 2 }
16 *
17 * maxBy(objects, 'n');
18 * // => { 'n': 2 }
19 */
20exports["default"] = (function (arr, fn) {
21 if (!is_array_1["default"](arr)) {
22 return undefined;
23 }
24 var max = arr[0];
25 var maxData;
26 if (is_function_1["default"](fn)) {
27 maxData = fn(arr[0]);
28 }
29 else {
30 maxData = arr[0][fn];
31 }
32 var data;
33 each_1["default"](arr, function (val) {
34 if (is_function_1["default"](fn)) {
35 data = fn(val);
36 }
37 else {
38 data = val[fn];
39 }
40 if (data > maxData) {
41 max = val;
42 maxData = data;
43 }
44 });
45 return max;
46});
47//# sourceMappingURL=max-by.js.map
\No newline at end of file