function ChangeMaker(price, payment) {
let priceInCents = Math.round(price * 100)
let paymentInCents = payment.reduce((acc, curr) => {
return acc += curr
}) * 100
if (paymentInCents > priceInCents){
console.log('can purchase, subtract the amount given from the price')
calculateChange(paymentInCents - priceInCents)
} else {
console.log(`can't purchase, return the paymentInCents`)
calculateChange(paymentInCents)
}
}
function calculateChange(change){
let changeArray = []
let currentChange = change
const quarters = calculateAmountOfDenomination(currentChange, 25)
changeArray.unshift(quarters)
currentChange -= (quarters * 25)
const dimes = calculateAmountOfDenomination(currentChange, 10)
changeArray.unshift(dimes)
currentChange -= (dimes * 10)
const nickels = calculateAmountOfDenomination(currentChange, 5)
changeArray.unshift(nickels)
currentChange -= (nickels * 5)
changeArray.unshift(currentChange)
console.log(changeArray)
}
function calculateAmountOfDenomination(change, denomination){
if (change < denomination){
return 0
} else {
return Number(parseInt(change / denomination))
}
}
I wrote an entire blog about a better solution here!