max-by.js 929 B

1234567891011121314151617181920212223242526272829303132333435
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var is_array_1 = require("./is-array");
  4. var is_function_1 = require("./is-function");
  5. /**
  6. * @param {Array} arr The array to iterate over.
  7. * @param {Function} [fn] The iteratee invoked per element.
  8. * @return {*} Returns the maximum value.
  9. * @example
  10. *
  11. * var objects = [{ 'n': 1 }, { 'n': 2 }];
  12. *
  13. * maxBy(objects, function(o) { return o.n; });
  14. * // => { 'n': 2 }
  15. *
  16. * maxBy(objects, 'n');
  17. * // => { 'n': 2 }
  18. */
  19. exports.default = (function (arr, fn) {
  20. if (!is_array_1.default(arr)) {
  21. return undefined;
  22. }
  23. var maxItem;
  24. var max = -Infinity;
  25. for (var i = 0; i < arr.length; i++) {
  26. var item = arr[i];
  27. var v = is_function_1.default(fn) ? fn(item) : item[fn];
  28. if (v > max) {
  29. maxItem = item;
  30. max = v;
  31. }
  32. }
  33. return maxItem;
  34. });
  35. //# sourceMappingURL=max-by.js.map