Hi guys I’m unable to notice where is going wrong as im failing last 2 conditions. i wish you guys can lend me ur eyes. much appreciated. link to challenge : https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/javascript-algorithms-and-data-structures-projects/cash-register/
const money = [
["ONE HUNDRED",10000],
["TWENTY",2000],
["TEN",1000],
["FIVE",500],
["ONE",100],
["QUARTER",25],
["DIME",10],
["NICKEL",5],
["PENNY",1]
];
function iHaveChange (moneyValue,totalCashValue,change) {
return totalCashValue >= moneyValue && change - moneyValue >= 0;
}
function cidToObject(cid) {
const myCash = {};
cid.forEach(money=> myCash[money[0]] = money[1]* 100)
return myCash;
}
function iHaveNoBills(myCash) {
let iHaveChange = false;
Object.keys(myCash).forEach(function(key){
if (myCash[key] > 0) {
iHaveChange = true;
}
})
return !iHaveChange;
}
function checkCashRegister(price, cash, cid) {
let change = cash*100 - price*100;
let myCash = cidToObject(cid);
let clientCash = {};
let i = 0;
while (i < money.length && change > 0) {
let moneyName = money[i][0];
let moneyValue = money[i][1];
if (iHaveChange(moneyValue,myCash[moneyName],change)) {
clientCash[moneyName] = 0;
while(iHaveChange(moneyValue,myCash[moneyName],change) ) {
clientCash += moneyValue/100;
myCash[moneyName] = parseInt(myCash[moneyName] - moneyValue);
change-=moneyValue;
}
}
i++
}
console.log(clientCash)
if (change === 0 ) {
if (iHaveNoBills(myCash) ) {
return {
status:"CLOSED",
change:cid
}
}
return {
status:"OPEN",
change:Object.keys(clientCash).map(function(key){
let arr = [key,clientCash[key]];
return arr
})
}
}
else {
return {status:"INSUFFICIENT_FUNDS",change:[]}
}
}
checkCashRegister(19.5, 20, [["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100]]);