Tell us what’s happening:
I am getting an error:
Error: Potential infinite loop at line 30. To disable loop protection, write: // noprotect as the first line. Beware that if you do have an infinite loop in your code this will crash your browser.
I am lost here and I can’t see the similarity with the issue Exact Change Help. Please help! This is my first time getting stuck. I hope posting a forum is an appropriate thing to do here. Otherwise, guidance is appreciated!
Your code so far
function checkCashRegister(price, cash, cid) {
function getSum(a, b){
if(isNaN(a)){
a = 0;
} else if (isNaN(b)){
b = 0;
}
return a+b;
}
function concatArr(a, b){
return a.concat(b);
}
var curValue = [1, 5, 10, 25, 100, 500, 1000, 2000, 10000];
var change = cash - price;
var cidTotal = cid.reduce(concatArr).reduce(getSum);
var changeDetails = [];
if (change > cidTotal) {
return "Insufficient Funds";
} else if (change === cidTotal){
return "Closed";
} else {
change = change * 100;
while(change > 0){
for (var j = curValue.length-1; j > 0; j--){
if (curValue[j] < change){
if (cid[j][1] >= change){
changeDetails.push([cid[j][0], Math.floor(cid[j][1]*change/curValue[j])]);
change = change%curValue[j];
} else {
changeDetails.push([cid[j][0], cid[j][1]]);
change = change - cid[j][1];
}
}
}
}
}
// Here is your change, ma'am.
return changeDetails;
}
// 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.01], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0], ["ONE", 1.00], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]]);
Your browser information:
Your Browser User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
.
Link to the challenge:
https://www.freecodecamp.org/challenges/exact-change