min-by.js 814 B

123456789101112131415161718192021222324252627282930313233
  1. import isArray from './is-array';
  2. import isFunction from './is-function';
  3. /**
  4. * @param {Array} arr The array to iterate over.
  5. * @param {Function} [fn] The iteratee invoked per element.
  6. * @return {*} Returns the minimum value.
  7. * @example
  8. *
  9. * var objects = [{ 'n': 1 }, { 'n': 2 }];
  10. *
  11. * minBy(objects, function(o) { return o.n; });
  12. * // => { 'n': 1 }
  13. *
  14. * minBy(objects, 'n');
  15. * // => { 'n': 1 }
  16. */
  17. export default (function (arr, fn) {
  18. if (!isArray(arr)) {
  19. return undefined;
  20. }
  21. var minItem;
  22. var min = Infinity;
  23. for (var i = 0; i < arr.length; i++) {
  24. var item = arr[i];
  25. var v = isFunction(fn) ? fn(item) : item[fn];
  26. if (v < min) {
  27. minItem = item;
  28. min = v;
  29. }
  30. }
  31. return minItem;
  32. });
  33. //# sourceMappingURL=min-by.js.map