JSFiddle - React, Tailwind, and code Playground

JavaScript

class PG {
  constructor(milestones) {
    this.milestones = milestones;
    this.sum = 0;
    this.milestones2 = [];
    this.milestones.forEach(m => {
      this.sum += m;
      this.milestones2.push(this.sum);
    });
    this.milestones3 = [];
    this.milestones4 = [];
    for (let i = 0; i < this.milestones.length; i++) {
      this.milestones3[i] = this.milestones[i] / this.sum * 100.0;
      this.milestones4[i] = this.milestones2[i] / this.sum * 100.0;
    }
    console.log(this.sum, this.milestones, this.milestones2, this.milestones3, this.milestones4);
  }
  fromValueToPercent(val) {
    return val / this.sum * 100.0;
  }
  fromPercentToValue(per) {
    return per / 100.0 * this.sum;
  }
}

let progressbar = new PG([5, 1, 15, 3]);
console.log(progressbar.fromValueToPercent(23), progressbar.fromPercentToValue(62.5));