Примерно так
const income = 50000;
let totalTaxes = 0;
if (income < 9875) {
totalTaxes += income * 0.1;
}
else {
totalTaxes += 9875 * 0.1;
if (income < 40125) {
totalTaxes += (income - 9875) * 0.12;
}
else {
totalTaxes += (40125 - 9875) * 0.12;
//et cetera
}
}
редактировать: Dynami c решение Я изменил массив интервалов, чтобы упростить его: первый элемент - это верхний предел предыдущего, а третий элемент - ставка налога. Выходы 6790
const singleIntervals = [
[0, 9875, 0.1],
[9875, 40125, 0.12],
[40125, 85525, 0.22],
[85525, 163300, 0.24],
[163300, 207350, 0.32],
[207350, 518400, 0.35],
[518400, 900000000, 0.37],
];
const income = 50000;
let totalTaxes = 0;
for (const interval of singleIntervals) {
if (income < interval[1]) {
totalTaxes += (income - interval[0]) * interval[2];
break;
}
else {
totalTaxes += (interval[1] - interval[0]) * interval[2];
}
}
console.log(totalTaxes);