number.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
  2. /**
  3. * Checks if value of n is a numeric one
  4. * http://jsperf.com/isnan-vs-isnumeric/4
  5. * @param n
  6. * @returns {boolean}
  7. */
  8. export function isNumeric(n) {
  9. /* eslint-disable */
  10. var t = typeof n === 'undefined' ? 'undefined' : _typeof(n);
  11. return t == 'number' ? !isNaN(n) && isFinite(n) : t == 'string' ? !n.length ? false : n.length == 1 ? /\d/.test(n) : /^\s*[+-]?\s*(?:(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?)|(?:0x[a-f\d]+))\s*$/i.test(n) : t == 'object' ? !!n && typeof n.valueOf() == 'number' && !(n instanceof Date) : false;
  12. }
  13. /**
  14. * A specialized version of `.forEach` defined by ranges.
  15. *
  16. * @param {Number} rangeFrom The number from start iterate.
  17. * @param {Number|Function} rangeTo The number where finish iterate or function as a iteratee.
  18. * @param {Function} [iteratee] The function invoked per iteration.
  19. */
  20. export function rangeEach(rangeFrom, rangeTo, iteratee) {
  21. var index = -1;
  22. if (typeof rangeTo === 'function') {
  23. iteratee = rangeTo;
  24. rangeTo = rangeFrom;
  25. } else {
  26. index = rangeFrom - 1;
  27. }
  28. while (++index <= rangeTo) {
  29. if (iteratee(index) === false) {
  30. break;
  31. }
  32. }
  33. }
  34. /**
  35. * A specialized version of `.forEach` defined by ranges iterable in reverse order.
  36. *
  37. * @param {Number} rangeFrom The number from start iterate.
  38. * @param {Number} rangeTo The number where finish iterate.
  39. * @param {Function} iteratee The function invoked per iteration.
  40. */
  41. export function rangeEachReverse(rangeFrom, rangeTo, iteratee) {
  42. var index = rangeFrom + 1;
  43. if (typeof rangeTo === 'function') {
  44. iteratee = rangeTo;
  45. rangeTo = 0;
  46. }
  47. while (--index >= rangeTo) {
  48. if (iteratee(index) === false) {
  49. break;
  50. }
  51. }
  52. }
  53. /**
  54. * Calculate value from percent.
  55. *
  56. * @param {Number} value Base value from percent will be calculated.
  57. * @param {String|Number} percent Can be Number or String (eq. `'33%'`).
  58. * @returns {Number}
  59. */
  60. export function valueAccordingPercent(value, percent) {
  61. percent = parseInt(percent.toString().replace('%', ''), 10);
  62. percent = parseInt(value * percent / 100, 10);
  63. return percent;
  64. }