Skip to content

Instantly share code, notes, and snippets.

@UberMouse
Created August 17, 2016 04:34
Show Gist options
  • Save UberMouse/b0edeb6c7c0503d63d29521ac12b3528 to your computer and use it in GitHub Desktop.
Save UberMouse/b0edeb6c7c0503d63d29521ac12b3528 to your computer and use it in GitHub Desktop.
function INCOME_TAX(input) {
var taxBrackets = {
14000: 0.105,
34000: 0.175,
22000: 0.30,
99999: 0.33
}
var salary = parseInt(input, 10)
return Object.keys(taxBrackets).reduce(function(acc, taxAmount) {
var taxPercent = taxBrackets[taxAmount]
var newTaxableRemaining = acc.taxableIncome - taxAmount
var limitedAfterTaxAmount = Math.min(taxAmount, acc.taxableIncome)
return {
taxableIncome: newTaxableRemaining < 0 ? 0 : newTaxableRemaining,
afterTaxIncome: acc.afterTaxIncome + (limitedAfterTaxAmount - (limitedAfterTaxAmount * taxPercent))
}
}, {taxableIncome: salary, afterTaxIncome: 0}).afterTaxIncome
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment