Tell us what’s happening:
Hi Guys,
Currently trying to tackle this last problem. All the checks are complete bar the OPEN ones.
Check 2 is coming out as two quarters which is fine but i dont know how to feed this into a final array.
Check 3 however is coming up totally wrong. Could anyone help me troubleshoot my code?
Your code so far
function checkCashRegister(price, cash, cid) {
var cashAvailable = cid;
var units = [{name:"PENNY", value:0.01}, {name:"NICKEL", value:0.05}, {name:"DIME", value: 0.1}, {name:"QUARTER",value: 0.25}, {name:"ONE", value:1}, {name:"FIVE", value:5}, {name:"TEN", value:10}, {name:"TWENTY",value: 20}, {name:"ONE HUNDRED", value: 100}].sort((a,b)=>{return b.value - a.value})
var register = {status:'', change:[]};
var changeRequired = cash - price;
var total = cashAvailable.flat().filter(x=>{return isNaN(x) == false}).reduce((a,b)=>{return a+b}).toFixed(2);
if(total < changeRequired){
register.status = 'INSUFFICIENT_FUNDS'
return register
} else if(total == changeRequired){
register.status = 'CLOSED'
register.change = cashAvailable
return register
}
if(total > changeRequired){
for(var i=0; i<units.length; i++){
while(changeRequired >= units[i].value && cashAvailable[i][1] > 0){
console.log(Math.round(changeRequired -= units[i].value))
cashAvailable[i][1] -= units[i].value
}
}
(changeRequired == (cash-price))? register.status = 'INSUFFICIENT_FUNDS' : (register.status = 'OPEN', register.change )
console.log(changeRequired)
}
return register
}
checkCashRegister(3.26, 100, [["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100]])
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36
.
Link to the challenge:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/javascript-algorithms-and-data-structures-projects/cash-register/