Snippet content copied to clipboard.
Are you sure to delete this snippet? No, don't delete
  1. function createExponentialSteps(millis, numSteps, base) {
  2. const steps = [];
  3. const exponentialFactor = Math.pow(base, 1 / numSteps);
  4. let sum = 0;
  5. for (let i = 0; i < numSteps - 1; i++) {
  6. const step = millis * Math.pow(exponentialFactor, i);
  7. steps.push(step);
  8. sum += step;
  9. }
  10. // Calculate the duration of the last step to ensure the total sum is equal to milliseconds
  11. const lastStep = millis - sum;
  12. steps.push(lastStep);
  13. return steps;
  14. }
  15. // Usage example
  16. const milliseconds = 5000;
  17. const numSteps = 5;
  18. const base = 0.5;
  19. const exponentialSteps = createExponentialSteps(milliseconds, numSteps, base);
  20. console.log(exponentialSteps);
  21. // output
  22. [
  23. 2664.84375,
  24. 1776.5625,
  25. 1184.375,
  26. 789.5833333333333,
  27. 525.4166666666667
  28. ]

Edit this Snippet