Tell us what’s happening:
I’ve implemented and sanity checked my code but as I run it in FCC, tests are failing saying that function
checkCashRegister
is not returning an object.
Your code so far
const REGISTER_STATUS = { closed: 'CLOSED', insufficient_funds: 'INSUFFICIENT_FUNDS', open: 'OPEN' }
const currencyDictionary = {
'PENNY': .01,
'NICKEL': .05,
'DIME': .10,
'QUARTER': .25,
'ONE': 1,
'FIVE': 5,
'TEN': 10,
'TWENTY': 20,
'ONE HUNDRED': 100
}
function checkCashRegister(price, cash, cid) {
let cashRegister = { status: '', change: cid };
let changeDue = (cash - price).toFixed(2);
let cashInRegister = getCashRegisterTotal(cid).toFixed(2);
let finalChange = {};
// if cash register has less than change due, equal to change due, and more than change due
if (changeDue > cashInRegister) {
finalChange['status'] = REGISTER_STATUS.insufficient_funds;
return finalChange;
} else if (changeDue === cashInRegister) {
finalChange['status'] = REGISTER_STATUS.closed;
finalChange['change'] = cid;
return finalChange;
} else {
change = calculateChange(changeDue, cid);
finalChange['status'] = REGISTER_STATUS.open;
finalChange['change'] = change;
}
console.log(finalChange);
return finalChange;
}
function getCashRegisterTotal(cid) {
let totalCash = 0;
for (let i = 0; i < cid.length; i++) {
let currentCurrency = cid[1];
totalCash += currentCurrency[1];
}
return totalCash;
}
function calculateChange(changeDue, cid) {
let change = [];
for (let i = cid.length - 1; i >= 0; i--) {
let currencyArray = cid[i];
let currencyName = currencyArray[0];
let currencyTotal = currencyArray[1];
let currencyValue = currencyDictionary[currencyName];
let currencyAmount = (currencyTotal / currencyValue).toFixed(2);
let currencyAmountToGive = 0;
while (changeDue >= currencyValue) {
changeDue = (changeDue - currencyValue).toFixed(2);
currencyAmount--;
currencyAmountToGive++;
}
if (currencyAmountToGive > 0) {
change.push(currencyName, currencyAmountToGive * currencyValue);
}
}
return 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]]);
Your browser information:
User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:80.0) Gecko/20100101 Firefox/80.0
.
Challenge: Cash Register
Link to the challenge: