Tell us what’s happening:
As far as I have checked my code is handling all the problem correctly but still, I am failing the cases mentioned.
Your code so far
const calculateChange=(paid,due)=>{
let change=paid-due
const currency=[
['PENNY',0.01,1.01],
["NICKEL",0.05,2.05],
["DIME",0.10,3.1],
["QUARTER",0.25,4.25],
["ONE",1,90],
["FIVE",5,55],
["TEN",10,20],
["TWENTY",20,60],
["ONE HUNDRED",100,100]
]
const reversedCurrency = currency.reverse();
var curr_arr=reversedCurrency.reduce(function(acc,curr){
let value=0;
while (curr[2] > 0 && change >= curr[1]) {
change = parseFloat((change - curr[1]).toFixed(2));
curr[2] -= curr[1];
value += curr[1];
}
if (value > 0) {
acc.push([ curr[0], value ]);
}
return acc;
},[])
return curr_arr
}
purchaseBtn.addEventListener("click",()=>{
let paid=parseFloat(cash.value,2);
let due=parseFloat(totalAmountDue.textContent).toFixed(2);
let total = parseFloat(cid.reduce((sum, currency) => sum + currency[1], 0)).toFixed(2);
if(paid===due){
displayChangeDue.style.display="block"
displayChangeDue.innerHTML=`<p> No change due - customer paid with exact cash </p>`
}else if(paid<due){
alert("Customer does not have enough money to purchase the item");
}else if((paid-due)>total){
displayChangeDue.style.display="block"
displayChangeDue.innerHTML=`<p> Status: INSUFFICIENT_FUNDS </p>`
}else{
let change=calculateChange(paid,due);
if(total===(paid-due).toFixed(2)){
displayChangeDue.style.display="block";
displayChangeDue.innerText=`Status: CLOSED`
}
else{
displayChangeDue.style.display="block";
displayChangeDue.innerText=`Status: OPEN`
}
change.forEach(i => {
displayChangeDue.innerText += ` ${i[0]}: $${i[1].toFixed(2)}`;
});
}
})
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0
Challenge Information:
Build a Cash Register Project - Build a Cash Register