max-by.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var each_1 = require("./each");
  4. var is_array_1 = require("./is-array");
  5. var 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. */
  20. exports.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