I need help i dont know whats wrong

Tell us what’s happening:
Ithink that i am finished with this but the return information is wrong because it is

 1. {status: " ", change: Array(9)}
  1. change: (9) [Array(2), Array(2), Array(2), Array(2), Array(2), Array(2), Array(2), Array(2), Array(2)]
  2. status: "CLOSED"

and it should be

{status: "OPEN", change: [["TWENTY", 60], ["TEN", 20], ["FIVE", 15], ["ONE", 1], ["QUARTER", 0.5], ["DIME", 0.2], ["PENNY", 0.04]]}

Your code so far


const REGISTER_STATUS = {
insufficientFunds: 'INSUFFICIENT_FUNDS',
closed: 'CLOSED',
open: 'OPEN'
}

function checkCashRegister(price, cash, cid) {
let cahsRegister = { status: ' ', change: cid };
console.log(cahsRegister);
const changeNeeded = parseFloat(cash - price).toFixed(2);
const changeAvelable = getTotalCashRegisterChange(cid);
cahsRegister.status = getTotalCashRegisterStatus(changeNeeded, changeAvelable);

if (cahsRegister.status === REGISTER_STATUS.insufficientFunds) {
  cahsRegister.change = [];

  return cahsRegister;
}

if (changeNeeded > getTotalCashRegisterChange(cahsRegister.change)) {
  cahsRegister = REGISTER_STATUS.insufficientFunds;
  cahsRegister.change = [];
}

cahsRegister.change = getCustomersChange(changeNeeded, cid);

if (cahsRegister.status === REGISTER_STATUS.closed) {
  cahsRegister.change = [...cid];
}

return cahsRegister;
}

function getCustomersChange(changeNeeded, changeInDrawer) {
const change = [];
const curencyLegend = {
  "PENNY": 0.01,
  "NICKEL": 0.05,
  "DIME": 0.10,
  "QUARTER": 0.25,
  "ONE": 1.00,
  "FIVE": 5.00,
  "TEN": 10.00,
  "TWENTY": 20.00,
  "ONE HUNDRED": 100.00
};

for (let i = changeInDrawer.length - 1; i >= 0; i--) {
  const coinName = changeInDrawer[i][0];
  const coinTotal = changeInDrawer[i][1];
  const coinValue = curencyLegend[coinName];
  let coinAmaunty = (coinTotal / coinValue).toFixed(2);
  let coinsToReturn = 0;

  while (changeNeeded >= coinValue && coinAmaunty > 0) {
    changeNeeded -= coinValue;
    changeNeeded = changeNeeded.toFixed(2);
    coinAmaunty--;
    coinsToReturn++;
  }

  if (coinsToReturn > 0) {
    change.push([coinName, coinsToReturn * coinValue]);
  }
}

return change;
}

function getTotalCashRegisterStatus(changeNeeded, changeAvelable) {
if (Number(changeNeeded) > Number(changeAvelable)) {
  return REGISTER_STATUS.insufficientFunds;
}

else if (Number(changeNeeded) > Number(changeAvelable)) {
  return REGISTER_STATUS.open;
}

return REGISTER_STATUS.closed;
}

function getTotalCashRegisterChange(changeInDrawer) {
let total = 0;

for (let change in changeInDrawer) {
  let changeValue = change[1];
  total += changeValue;
}

return total.toFixed(2);
}

// Example cash-in-drawer array:
// [["PENNY", 1.01],
// ["NICKEL", 2.05],2
// ["DIME", 3.10],
// ["QUARTER", 4.25],
// ["ONE", 90.00],
// ["FIVE", 55.00],
// ["TEN", 20.00],
// ["TWENTY", 60.00],
// ["ONE HUNDRED", 100.00]]

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/78.0.3904.108 Safari/537.36.

Challenge: Cash Register

Link to the challenge:

Hi @ktic9, since you haven’t had a response to this yet it may be better to put it in the JavaScript forum. You’ll get more eyes there.