Build a stamp duty calculator for various types of buyers
Hard coded
You have created yourself a future problem by hard coding the data in your code.  When dealing with taxes (or any business logic)  there is one certainty, and that is change.
With the data embedded in the code, making even a minor change will take some effort and will be very prone to error.
You need to create a data structure that allows you to make changes quickly and easily. You should only have to change a value once, in one location, not many times in many places.
Defining the data
The data is defined as an object, with only the data needed, if information can be deduced there is no need to include it.
The example has a helper function rate to reduce the overhead of typing in {level:10000, tax: 0.1} over and over
const rate = (level, tax) =&gt; ({level, tax});
const brackets = {
    firstTime: [
        rate(300000, 0),
        rate(925000, 0.05),
        rate(1500000, 0.1),
        rate(Infinity, 0.12),
    ],
    returning: [
        rate(125000, 0),
        rate(250000, 0.02),
        rate(925000, 0.05),
        rate(1500000, 0.1),
        rate(Infinity, 0.12),   
    ],
    second: [
        rate(125000, 0.03),
        rate(250000, 0.05),
        rate(925000, 0.08),
        rate(1500000, 0.13),
        rate(Infinity, 0.15),       
    ],
};

Applying logic
With the data organised, the code can then just deal with the logic of how the duty is calculated:
function calculateDuty(price, bracket) {
    var duty = 0;
    var prevLevel = 0
    for (const rate of bracket) {
        if (rate.level &lt;= price) {
            duty += (rate.level - prevLevel) * rate.tax;
            prevLevel = rate.level;
        } else {
            return duty + (price - prevLevel) * rate.tax;
        }
    }
}

And now you can get the duty for any bracket: calculateDuty(price, brackets.firstTime)
Rewrite
Thus the whole thing becomes:
const rate = (level, tax) =&gt; ({level, tax});
const brackets = {
    firstTime: [rate(300000, 0), rate(925000, 0.05), rate(1500000, 0.1), rate(Infinity, 0.12)],
    returning: [rate(125000, 0), rate(250000, 0.02), rate(925000, 0.05), rate(1500000, 0.1), rate(Infinity, 0.12)],
    second: [rate(125000, 0.03), rate(250000, 0.05), rate(925000, 0.08), rate(1500000, 0.13), rate(Infinity, 0.15)],
};
const stampDutyCalc = price =&gt; ({  
    ftb: calculateDuty(price, brackets.firstTime),
    rtb: calculateDuty(price, brackets.returning), 
    shb: calculateDuty(price, brackets.second), 
});

function calculateDuty(price, bracket) {
    var duty = 0, prevLevel = 0
    for (const rate of bracket) {
        if (rate.level &lt;= price) {
            duty += (rate.level - prevLevel) * rate.tax;
            prevLevel = rate.level;
        } else {
            return duty + (price - prevLevel) * rate.tax;
        }
    }
}