I am returning the correct answers in the browser but it wont accept “Closed” as a correct answer. It accepts everything else as correct but not “Closed” and I am very confused as to why.
var changeDue;
var drawerTotal = 0;
function modularWhile(drawVal, curTar, curCoin){
var counter = 0;
var arrBuild = [];
while(changeDue >= curCoin && drawVal > 0){
if(counter === 0){
arrBuild.push([curTar, curCoin]);
counter = 1;
drawerTotal -= curCoin;
}
else{
arrBuild[0][1] += curCoin;
}
drawVal -= curCoin;
changeDue -= curCoin;
drawerTotal -= curCoin;
}
if(arrBuild.length > 0 && arrBuild[0][0] == "PENNY"){
arrBuild[0][1] += curCoin;
changeDue -= curCoin;
drawerTotal -= curCoin;
}
return arrBuild;
}
function checkCashRegister(price, cash, cid) {
changeDue = cash - price;
var dollarVal = [0.01, 0.05, 0.1, 0.25, 1.00, 5.00, 10.00, 20.00];
var change = [];
// Here is your change, ma'am.
for(var i = 7; i > -1; i--){
drawerTotal += cid[i][1];
var tempArr = modularWhile(cid[i][1], cid[i][0], dollarVal[i]);
if(tempArr.length > 0){
var flat = tempArr.reduce(function(a, b) {
return a.concat(b);
}, []);
change.push(flat);
}
}
if(changeDue > 0.01){
return "Insufficient Funds";
}
else if(drawerTotal < 0.01){
return "Closed";
}
return change;
}
// Example cash-in-drawer array:
// [["PENNY", 1.01],
// ["NICKEL", 2.05],
// ["DIME", 3.10],
// ["QUARTER", 4.25],
// ["ONE", 90.00],
// ["FIVE", 55.00],
// ["TEN", 20.00],
// ["TWENTY", 60.00],
// ["ONE HUNDRED", 100.00]]
checkCashRegister(19.50, 20.00, [["PENNY", 0.50], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0], ["ONE", 0], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]]);