JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<div id="result">
</div>
JavaScript
function roundPercentages(l, target) {
var off = target - _.reduce(l, function(acc, x) { return acc + Math.round(x) }, 0);
let alreadySubstracted = false;
let substraction = false;
return _.chain(l).
map(function(x, i) {
lastSubstraction = (i >= (l.length + off)) && !lastButOneSubstraction;
lastButOneSubstraction = (l[i+1] == 0 && i+1 >= (l.length + off) && !(i >= (l.length + off)));
return Math.round(x) + (off > i) - (lastSubstraction || lastButOneSubstraction)
}).
value();
}
document.getElementById("result").innerHTML = roundPercentages([52.6813880126183, 5.941114616193481, 24.55310199789695, 8.780231335436383, 8.04416403785489,0], 100);