JSFiddle - React, Tailwind, and code Playground

JavaScript

let milestones = [10, 30, 20];

function getPercentFromMilestone(milestoneIndex, milestoneValue) {
  let sum = 0;
  for (let i = 0; i < milestoneIndex; i++) {
    sum += milestones[i];
  }
  sum += milestoneValue;
  let sum2 = milestones.reduce((a, b) => a + b, 0);
  return sum / sum2 * 100.0;
}

function getPercent(val) {
  let sum = milestones.reduce((a, b) => a + b, 0);
  return val / sum * 100.0;
}

function getMilestone(val) {
  for (let i = 0; i < milestones.length; i++) {
    val -= milestones[i];
    if (val <= 0) {
      return i;
    }
  }
  return -1;
}

for (let i = 0; i <= 30; i++) {
  console.log(i + " of MS 2 is " + getPercentFromMilestone(1, i) + " %");
}

for (let i = 0; i <= 60; i++) {
  console.log(i + " of all MS is " + getPercent(i) + " %, that is MS " + (getMilestone(i) + 1));
}