min.ts 610 B

12345678910111213141516171819202122232425262728
  1. import each from './each';
  2. import isArray from './is-array';
  3. /**
  4. * @param {Array} arr The array to iterate over.
  5. * @return {*} Returns the minimum value.
  6. * @example
  7. *
  8. * min([1, 2]);
  9. * // => 1
  10. *
  11. * min([]);
  12. * // => undefined
  13. *
  14. * const data = new Array(1250010).fill(1).map((d,idx) => idx);
  15. *
  16. * min(data);
  17. * // => 1250010
  18. * // Math.min(...data) will encounter "Maximum call stack size exceeded" error
  19. */
  20. export default (arr: number[]): number | undefined => {
  21. if (!isArray(arr)) {
  22. return undefined;
  23. }
  24. return arr.reduce((prev, curr) => {
  25. return Math.min(prev, curr)
  26. }, arr[0]);
  27. };