Cash register not passing because of if statement why?

Tell us what’s happening:

Everything seems to work ok but I am stuck with the if statement for the first condition :point_down:

{ status: “INSUFFICIENT_FUNDS”, change: [ ] } if cash-in-drawer is less than the change due, or if you cannot return the exact change.

Sometimes Test 1 passes but Test 2 doesn’t and vice versa. Other times either Test 1 or Test 2 passes but not without some other Test failing alongside with it.

Your code so far


function checkCashRegister(price, cash, cid) {

  var change = cash - price;
  var changeSplit = String(change).split(".");

  var billsToGiveBack = Number(changeSplit[0]);
  console.log(billsToGiveBack);

  var coinsToGiveBack = Number(`${'.'}${changeSplit[1]}`);
  console.log(coinsToGiveBack);


  let cashInDrawer = 0;

  for (let i = 0; i < cid.length; i++) {
    cashInDrawer += cid[i][1]
  }


  if (change === cashInDrawer) {
    return {
      status: "CLOSED",
      change: [...cid]
    }

  }
  if(change !== cashInDrawer) {
    return {
      status: "INSUFFICIENT_FUNDS",
      change: []
    }
  }

  if(cashInDrawer > change) {

    // seprating Bills And Coins to return customer

    let cidCoins = [];

    for (let i = 0; i < 4; i++) {
      cidCoins.push(cid[i])

    }

    let cidBills = [];

    for (let i = 4; i <= 8; i++) {
      cidBills.push(cid[i])
    }

//     bills and coins to return customer

    let dollarsToGiveBack = [];
    let sumUp = 0;

    let hundredDollars = [cidBills[4]];
    console.log(hundredDollars);

    let noOfHundredDollars = [];

    for (let i = 100; i <= hundredDollars[0][1]; i += 100) {
      noOfHundredDollars.push(100);
    }

    if (hundredDollars[0][1] < billsToGiveBack) {

      let sum = 0;

      for (let i = 0; i <= noOfHundredDollars.length; i++) {
        if (sumUp < billsToGiveBack) {
          sumUp += noOfHundredDollars[i];
          sum += noOfHundredDollars[i];

        } else if (sumUp > billsToGiveBack) {

          sumUp -= noOfHundredDollars[i];
          sum -= noOfHundredDollars[i];
        }
      }

      dollarsToGiveBack.push(["TWENTY", sum]);

    }


    let twentyDollars = [cidBills[3]];
    console.log(twentyDollars)

    let noOfTwentyDollars = [];

    for (let i = 20; i <= twentyDollars[0][1]; i += 20) {
      noOfTwentyDollars.push(20);
    }

    if (sumUp < billsToGiveBack) {

      let sum = 0;

      for (let i = 0; i < noOfTwentyDollars.length; i++) {
        if (sumUp < billsToGiveBack) {
          sumUp += noOfTwentyDollars[i];
          sum += noOfTwentyDollars[i];

        }
      }

      if (sumUp === billsToGiveBack && sum !== 0) {
        dollarsToGiveBack.push(["TWENTY", sum]);

      } else {
        while (sumUp > billsToGiveBack) {
          sumUp -= 20;
          sum -= 20;
        }
        if (sumUp < billsToGiveBack && sum !== 0) {
          dollarsToGiveBack.push(["TWENTY", sum]);
        }
      }
    }


    let tenDollars = [cidBills[2]];
    console.log(tenDollars);

    let noOfTenDollars = [];

    for (let i = 10; i <= tenDollars[0][1]; i += 10) {
      noOfTenDollars.push(10);
    }
    if (sumUp < billsToGiveBack) {

      let sum = 0;

      for (i = 0; i < noOfTenDollars.length; i++) {
        if (sumUp < billsToGiveBack) {
          sumUp += noOfTenDollars[i];
          sum += noOfTenDollars[i]
        }
      }
      if (sumUp === billsToGiveBack && sum !== 0) {
        dollarsToGiveBack.push(["TEN", sum]);
      } else {
        while (sumUp > billsToGiveBack) {
          sumUp -= 10;
          sum -= 10;
        }
        if (sumUp < billsToGiveBack && sum !== 0) {
          dollarsToGiveBack.push(["TEN", sum]);
        }
      }
    }


    let fiveDollars = [cidBills[1]];
    console.log(fiveDollars);

    let noOfFiveDollars = [];

    for (let i = 5; i <= fiveDollars[0][1]; i += 5) {
      noOfFiveDollars.push(5);
    }

    if (sumUp < billsToGiveBack) {
      let sum = 0;

      for (i = 0; i < noOfFiveDollars.length; i++) {

        if (sumUp < billsToGiveBack) {

          sumUp += noOfFiveDollars[i];
          sum += noOfFiveDollars[i];

        }

      }
      if (sumUp === billsToGiveBack && sum !== 0) {
        dollarsToGiveBack.push(["FIVE", sum]);

      } else {
        while (sumUp > billsToGiveBack) {
          sumUp -= 5;
          sum -= 5;
        }
        if (sumUp < billsToGiveBack && sum !== 0) {
          dollarsToGiveBack.push(["FIVE", sum]);
        }
      }

    }


    let oneDollars = [cidBills[0]];
    console.log(oneDollars);

    let noOfOneDollars = [];

    for (let i = 1; i <= oneDollars[0][1]; i += 1) {
      noOfOneDollars.push(1);
    }

    if (sumUp < billsToGiveBack) {
      let sum = 0;

      for (i = 0; i < noOfOneDollars.length; i++) {

        if (sumUp < billsToGiveBack) {
          sumUp += noOfOneDollars[i];
          sum += noOfOneDollars[i];
        }
      }
       if (sumUp === billsToGiveBack && sum !== 0) {
        dollarsToGiveBack.push(["ONE", sum]);

      }
      else {
        while (sumUp > billsToGiveBack) {
          sumUp -= 1;
          sum -= 1;
        }
        if (sumUp <= billsToGiveBack && sum !== 0) {
        dollarsToGiveBack.push(["ONE", sum]);
      }
      }
    }


    let coinsToGiveBackCustomer = [];
    let sumUp2 =  Number(Number(0).toFixed(1));

    let quarters = String([cidCoins[3][1]]);
    console.log(quarters);

    let quartersSplit = quarters.split(".");
    console.log(Number(quartersSplit[0]));


    if (sumUp2 < coinsToGiveBack) {


      let sum1 = 0;
      for (let i = 0; i <= Number(quartersSplit[0]); i++) {


        if (sumUp2 < coinsToGiveBack) {
          sumUp2 += 0.1
          sum1 += 0.1;
        }
      }
      if (Number(Number(sumUp2).toFixed(2)) === coinsToGiveBack) {
        coinsToGiveBackCustomer.push(["QUARTER", sum1]);
      } else {
        while (sumUp2 > coinsToGiveBack) {
          sumUp2 -= 0.1;
          sum1 -= 0.1
        }
        if (Number(Number(sumUp2).toFixed(2)) < coinsToGiveBack && sum1 !== 0) {
          coinsToGiveBackCustomer.push(["QUARTER", Number(Number(sum1).toFixed(1))]);
        }
      }

    }


    let dimes = String([cidCoins[2][1]]);
    console.log(dimes);

    let dimesSplit = dimes.split(".");
    console.log(Number(dimesSplit[0]));

    if (sumUp2 < coinsToGiveBack) {

      let sum2 = 0;
      for (let i = 0; i <= Number(dimesSplit[0]); i++) {

        if (sumUp2 < coinsToGiveBack) {
          sumUp2 += 0.1;
          sum2 += 0.1;
        }
      }
      if (Number(Number(sumUp2).toFixed(2)) === coinsToGiveBack) {
        coinsToGiveBackCustomer.push(["DIME", sum2]);
      } else {
        while (sumUp2 > coinsToGiveBack) {
          sumUp2 -= 0.1;
          sum2 -= 0.1;
        }
        if (Number(Number(sumUp2).toFixed(2)) < coinsToGiveBack && sum2 !== 0) {
          coinsToGiveBackCustomer.push(["DIME", Number(Number(sum2).toFixed(1))]);
        }

      }
    }


    let nickel = String([cidCoins[1][1]]);
    console.log(nickel);

    let nickelSplit = nickel.split(".");
    console.log(Number(nickelSplit[0]));

    if (sumUp2 < coinsToGiveBack) {
      let sum3 = 0;
      for (let i = 0; i <= Number(nickelSplit[0]); i++) {

        if (sumUp2 < coinsToGiveBack) {
          sumUp2 += 0.05
          sum3 += 0.05;

        }
      }
      if (Number(Number(sumUp2).toFixed(2)) === coinsToGiveBack) {
        coinsToGiveBackCustomer.push(["NICKEL", sum3]);
      } else {
        while (sumUp2 > coinsToGiveBack) {
          sumUp2 -= 0.05;
          sum3 -= 0.05;
        }
        if (Number(Number(sumUp2).toFixed(2)) < coinsToGiveBack && sum3 !== 0) {
          coinsToGiveBackCustomer.push(["NICKEL", sum3]);
        }
      }

    }


    let penny = String([cidCoins[0][1]]);
    console.log(penny);

    let pennySplit = penny.split(".");
    console.log(Number(pennySplit[0]));


    if (sumUp2 < coinsToGiveBack) {
      let sum4 = 0;
      for (let i = 0; i <= 3; i++) {

        if (sumUp2 < coinsToGiveBack) {
          sumUp2 += 0.01;
          sum4 += 0.01;

        }

      }

      if (Number(Number(sumUp2).toFixed(2)) === coinsToGiveBack) {
        coinsToGiveBackCustomer.push(["PENNY", sum4]);
      }
      else {
        while (sumUp2 > coinsToGiveBack) {
          sumUp2 -= 0.01;
          sum4 -= 0.01;
        }
        if (Number(Number(sumUp2).toFixed(2)) === coinsToGiveBack && sum4 !== 0) {
          coinsToGiveBackCustomer.push(["PENNY", sum4]);
        }
      }
    }

    if (billsToGiveBack === 0) {
      return {
        status: "OPEN",
        change: [...coinsToGiveBackCustomer]
      }
    } else {
      return {
        status: "OPEN",
        change: [...dollarsToGiveBack, ...coinsToGiveBackCustomer]
      }
    }

  }


}

Your browser information:

User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36.

Challenge: Cash Register

Link to the challenge:

I’ve edited your post for readability. When you enter a code block into a forum post, please precede it with a separate line of three backticks and follow it with a separate line of three backticks to make it easier to read.

You can also use the “preformatted text” tool in the editor (</>) to add backticks around text.

See this post to find the backtick on your keyboard.
Note: Backticks (`) are not single quotes (’).

1 Like
  if(cashInDrawer > change) {

This if statement will never execute because it comes after this:

  if (change === cashInDrawer) {
    return {
      status: "CLOSED",
      change: [...cid]
    }

  }
    if(change !== cashInDrawer) {
    return {
      status: "INSUFFICIENT_FUNDS",
      change: []
    }
  }

change will either be equal to cashInDrawer and your function would have returned in the first if, or change will not be equal to cashInDrawer and your function will already have returned in the second if.

(post withdrawn by author, will be automatically deleted in 24 hours unless flagged)

@ArielLeslie all tests pass on Chrome dev tools however Test 3 fails on FCC editor

New code :point_down:

 var change = Number((Number(cash - price).toFixed(2)));
  var changeSplit = String(change).split(".");
  console.log(change);

  var billsToGiveBack = Number(changeSplit[0]);
  console.log(billsToGiveBack);

  var coinsToGiveBack = Number(`${'.'}${changeSplit[1]}`);
  console.log(Number(Number(coinsToGiveBack).toFixed(2)));


  let cashInDrawer = 0;

  for (let i = 0; i < cid.length; i++) {
    cashInDrawer += cid[i][1]
  }

   if (change === cashInDrawer) {
    return {
      status: "CLOSED",
      change: [...cid]
    }

  }
  if(cashInDrawer < change) {
      return {
          status: "INSUFFICIENT_FUNDS",
          change: []
      }
  }

  else {

    // seprating Bills And Coins to return customer

    let cidCoins = [];

    for (let i = 0; i < 4; i++) {
      cidCoins.push(cid[i])

    }

    let cidBills = [];

    for (let i = 4; i <= 8; i++) {
      cidBills.push(cid[i])
    }

//     bills to return

    let dollarsToGiveBack = [];
    let sumUp = 0;

    let hundredDollars = [cidBills[4]];

    let noOfHundredDollars = [];

    for (let i = 100; i <= hundredDollars[0][1]; i += 100) {
      noOfHundredDollars.push(100);
    }

    if (hundredDollars[0][1] < billsToGiveBack) {

      let sum = 0;

      for (let i = 0; i <= noOfHundredDollars.length; i++) {
        if (sumUp < billsToGiveBack) {
          sumUp += noOfHundredDollars[i];
          sum += noOfHundredDollars[i];

        } 
      }
       if (sumUp === billsToGiveBack && sum !== 0) {
        dollarsToGiveBack.push(["HUNDRED", sum]);

      } else {
        while (sumUp > billsToGiveBack) {
          sumUp -= 100;
          sum -= 100;
        }
        if (sumUp < billsToGiveBack && sum !== 0) {
          dollarsToGiveBack.push(["HUNDRED", sum]);
        }
      }    

    }


    let twentyDollars = [cidBills[3]];

    let noOfTwentyDollars = [];

    for (let i = 20; i <= twentyDollars[0][1]; i += 20) {
      noOfTwentyDollars.push(20);
    }

    if (sumUp < billsToGiveBack) {

      let sum = 0;

      for (let i = 0; i < noOfTwentyDollars.length; i++) {
        if (sumUp < billsToGiveBack) {
          sumUp += noOfTwentyDollars[i];
          sum += noOfTwentyDollars[i];

        }
      }

      if (sumUp === billsToGiveBack && sum !== 0) {
        dollarsToGiveBack.push(["TWENTY", sum]);

      } else {
        while (sumUp > billsToGiveBack) {
          sumUp -= 20;
          sum -= 20;
        }
        if (sumUp < billsToGiveBack && sum !== 0) {
          dollarsToGiveBack.push(["TWENTY", sum]);
        }
      }
    }


    let tenDollars = [cidBills[2]];

    let noOfTenDollars = [];

    for (let i = 10; i <= tenDollars[0][1]; i += 10) {
      noOfTenDollars.push(10);
    }
    if (sumUp < billsToGiveBack) {

      let sum = 0;

      for (i = 0; i < noOfTenDollars.length; i++) {
        if (sumUp < billsToGiveBack) {
          sumUp += noOfTenDollars[i];
          sum += noOfTenDollars[i]
        }
      }
      if (sumUp === billsToGiveBack && sum !== 0) {
        dollarsToGiveBack.push(["TEN", sum]);
      } else {
        while (sumUp > billsToGiveBack) {
          sumUp -= 10;
          sum -= 10;
        }
        if (sumUp < billsToGiveBack && sum !== 0) {
          dollarsToGiveBack.push(["TEN", sum]);
        }
      }
    }


    let fiveDollars = [cidBills[1]];

    let noOfFiveDollars = [];

    for (let i = 5; i <= fiveDollars[0][1]; i += 5) {
      noOfFiveDollars.push(5);
    }

    if (sumUp < billsToGiveBack) {
      let sum = 0;

      for (i = 0; i < noOfFiveDollars.length; i++) {

        if (sumUp < billsToGiveBack) {

          sumUp += noOfFiveDollars[i];
          sum += noOfFiveDollars[i];

        }

      }
      if (sumUp === billsToGiveBack && sum !== 0) {
        dollarsToGiveBack.push(["FIVE", sum]);

      } else {
        while (sumUp > billsToGiveBack) {
          sumUp -= 5;
          sum -= 5;
        }
        if (sumUp < billsToGiveBack && sum !== 0) {
          dollarsToGiveBack.push(["FIVE", sum]);
        }
      }

    }


    let oneDollars = [cidBills[0]];
    console.log(oneDollars);

    if (sumUp < billsToGiveBack) {
      let sum = 0;

      for (i = 0; i <= 4; i++) {

        if (sumUp < billsToGiveBack) {
          sumUp += 1;
          sum += 1;
        }
      }
       if (sumUp === billsToGiveBack && sum !== 0) {
        dollarsToGiveBack.push(["ONE", sum]);

      }
      else {
        while (sumUp > billsToGiveBack) {
          sumUp -= 1;
          sum -= 1;
        }
        if (sumUp <= billsToGiveBack && sum !== 0) {
        dollarsToGiveBack.push(["ONE", sum]);
      }
      }
    }

    //coins to return

    let coinsToGiveBackCustomer = [];
    let sumUp2 = 0;

    let quarters = String([cidCoins[3][1]]);
    console.log(quarters);

    let quartersSplit = quarters.split(".");
    console.log(Number(quartersSplit[0]));


    if (sumUp2 < Number(Number(coinsToGiveBack).toFixed(2))) {


      let sum1 = 0;
      for (let i = 0; i <= Number(quartersSplit[0]); i++) {


        if (sumUp2 < Number(Number(coinsToGiveBack).toFixed(2))) {
          sumUp2 += 0.1
          sum1 += 0.1;
        }
      }
      if (Number(Number(sumUp2).toFixed(2)) === Number(Number(coinsToGiveBack).toFixed(2))) {
        coinsToGiveBackCustomer.push(["QUARTER", sum1]);
      } else {
        while (sumUp2 > Number(Number(coinsToGiveBack).toFixed(2))) {
          sumUp2 -= 0.1;
          sum1 -= 0.1
        }
        if (Number(Number(sumUp2).toFixed(2)) < Number(Number(coinsToGiveBack).toFixed(2)) && sum1 !== 0) {
          coinsToGiveBackCustomer.push(["QUARTER", Number(Number(sum1).toFixed(1))]);
        }
      }

    }


    let dimes = String([cidCoins[2][1]]);
    console.log(dimes);

    let dimesSplit = dimes.split(".");
    console.log(Number(dimesSplit[0]));

    if (sumUp2 < Number(Number(coinsToGiveBack).toFixed(2))) {

      let sum2 = 0;
      for (let i = 0; i <= Number(dimesSplit[0]); i++) {

        if (sumUp2 < Number(Number(coinsToGiveBack).toFixed(2))) {
          sumUp2 += 0.1;
          sum2 += 0.1;
        }
      }
      if (Number(Number(sumUp2).toFixed(2)) === Number(Number(coinsToGiveBack).toFixed(2))) {
        coinsToGiveBackCustomer.push(["DIME", sum2]);
      } else {
        while (sumUp2 > Number(Number(coinsToGiveBack).toFixed(2))) {
          sumUp2 -= 0.1;
          sum2 -= 0.1;
        }
        if (Number(Number(sumUp2).toFixed(2)) < Number(Number(coinsToGiveBack).toFixed(2)) && sum2 !== 0) {
          coinsToGiveBackCustomer.push(["DIME", Number(Number(sum2).toFixed(1))]);
        }

      }
    }


    let nickel = String([cidCoins[1][1]]);
    console.log(nickel);

    let nickelSplit = nickel.split(".");
    console.log(Number(nickelSplit[0]));

    if (sumUp2 < Number(Number(coinsToGiveBack).toFixed(2))) {
      let sum3 = 0;
      for (let i = 0; i <= Number(nickelSplit[0]); i++) {

        if (sumUp2 < Number(Number(coinsToGiveBack).toFixed(2))) {
          sumUp2 += 0.05
          sum3 += 0.05;

        }
      }
      if (Number(Number(sumUp2).toFixed(2)) === coinsToGiveBack) {
        coinsToGiveBackCustomer.push(["NICKEL", sum3]);
      } else {
        while (sumUp2 > coinsToGiveBack) {
          sumUp2 -= 0.05;
          sum3 -= 0.05;
        }
        if (Number(Number(sumUp2).toFixed(2)) < coinsToGiveBack && sum3 !== 0) {
          coinsToGiveBackCustomer.push(["NICKEL", sum3]);
        }
      }

    }


    let penny = String([cidCoins[0][1]]);
    console.log(penny);

    let pennySplit = penny.split(".");
    console.log(Number(pennySplit[0]));


    if (sumUp2 < Number(Number(coinsToGiveBack).toFixed(2))) {
      let sum4 = 0;
      for (let i = 0; i <= 3; i++) {

        if (sumUp2 < Number(Number(coinsToGiveBack).toFixed(2))) {
          sumUp2 += 0.01;
          sum4 += 0.01;

        }

      }

      if (Number(Number(sumUp2).toFixed(2)) === Number(Number(coinsToGiveBack).toFixed(2))) {
        coinsToGiveBackCustomer.push(["PENNY", sum4]);
      }
      else {
        while (sumUp2 > Number(Number(coinsToGiveBack).toFixed(2))) {
          sumUp2 -= 0.01;
          sum4 -= 0.01;
        }
        if (Number(Number(sumUp2).toFixed(2)) === Number(Number(coinsToGiveBack).toFixed(2)) && sum4 !== 0) {
          coinsToGiveBackCustomer.push(["PENNY", sum4]);
        }
      }
    }

       let total = [...dollarsToGiveBack, ...coinsToGiveBackCustomer]

       let add = 0;

       for(let i = 0; i < total.length; i++) {
           add += total[i][1]
       }
     
     if(Number(Number(add).toFixed(2)) === change) {
         return {
        status: "OPEN",
        change: [...dollarsToGiveBack, ...coinsToGiveBackCustomer]
         }
     }
     else  {
         return {
        status: "INSUFFICIENT_FUNDS",
        change: []
         }
     }
    }         

can you give the whole code? you are missing the function signature

@ilenia correction test 3 fails using FCC editor

[spoiler]
function checkCashRegister(price, cash, cid) {

  var change = Number((Number(cash - price).toFixed(2)));
  var changeSplit = String(change).split(".");
  console.log(change);

  var billsToGiveBack = Number(changeSplit[0]);
  console.log(billsToGiveBack);

  var coinsToGiveBack = Number(`${'.'}${changeSplit[1]}`);
  console.log(Number(Number(coinsToGiveBack).toFixed(2)));


  let cashInDrawer = 0;

  for (let i = 0; i < cid.length; i++) {
    cashInDrawer += cid[i][1]
  }

   if (change === cashInDrawer) {
    return {
      status: "CLOSED",
      change: [...cid]
    }

  }
  if(cashInDrawer < change) {
      return {
          status: "INSUFFICIENT_FUNDS",
          change: []
      }
  }

  else {

    // seprating Bills And Coins to return customer

    let cidCoins = [];

    for (let i = 0; i < 4; i++) {
      cidCoins.push(cid[i])

    }

    let cidBills = [];

    for (let i = 4; i <= 8; i++) {
      cidBills.push(cid[i])
    }

//     bills to return

    let dollarsToGiveBack = [];
    let sumUp = 0;

    let hundredDollars = [cidBills[4]];

    let noOfHundredDollars = [];

    for (let i = 100; i <= hundredDollars[0][1]; i += 100) {
      noOfHundredDollars.push(100);
    }

    if (hundredDollars[0][1] < billsToGiveBack) {

      let sum = 0;

      for (let i = 0; i <= noOfHundredDollars.length; i++) {
        if (sumUp < billsToGiveBack) {
          sumUp += noOfHundredDollars[i];
          sum += noOfHundredDollars[i];

        } 
      }
       if (sumUp === billsToGiveBack && sum !== 0) {
        dollarsToGiveBack.push(["HUNDRED", sum]);

      } else {
        while (sumUp > billsToGiveBack) {
          sumUp -= 100;
          sum -= 100;
        }
        if (sumUp < billsToGiveBack && sum !== 0) {
          dollarsToGiveBack.push(["HUNDRED", sum]);
        }
      }    

    }


    let twentyDollars = [cidBills[3]];

    let noOfTwentyDollars = [];

    for (let i = 20; i <= twentyDollars[0][1]; i += 20) {
      noOfTwentyDollars.push(20);
    }

    if (sumUp < billsToGiveBack) {

      let sum = 0;

      for (let i = 0; i < noOfTwentyDollars.length; i++) {
        if (sumUp < billsToGiveBack) {
          sumUp += noOfTwentyDollars[i];
          sum += noOfTwentyDollars[i];

        }
      }

      if (sumUp === billsToGiveBack && sum !== 0) {
        dollarsToGiveBack.push(["TWENTY", sum]);

      } else {
        while (sumUp > billsToGiveBack) {
          sumUp -= 20;
          sum -= 20;
        }
        if (sumUp < billsToGiveBack && sum !== 0) {
          dollarsToGiveBack.push(["TWENTY", sum]);
        }
      }
    }


    let tenDollars = [cidBills[2]];

    let noOfTenDollars = [];

    for (let i = 10; i <= tenDollars[0][1]; i += 10) {
      noOfTenDollars.push(10);
    }
    if (sumUp < billsToGiveBack) {

      let sum = 0;

      for (i = 0; i < noOfTenDollars.length; i++) {
        if (sumUp < billsToGiveBack) {
          sumUp += noOfTenDollars[i];
          sum += noOfTenDollars[i]
        }
      }
      if (sumUp === billsToGiveBack && sum !== 0) {
        dollarsToGiveBack.push(["TEN", sum]);
      } else {
        while (sumUp > billsToGiveBack) {
          sumUp -= 10;
          sum -= 10;
        }
        if (sumUp < billsToGiveBack && sum !== 0) {
          dollarsToGiveBack.push(["TEN", sum]);
        }
      }
    }


    let fiveDollars = [cidBills[1]];

    let noOfFiveDollars = [];

    for (let i = 5; i <= fiveDollars[0][1]; i += 5) {
      noOfFiveDollars.push(5);
    }

    if (sumUp < billsToGiveBack) {
      let sum = 0;

      for (i = 0; i < noOfFiveDollars.length; i++) {

        if (sumUp < billsToGiveBack) {

          sumUp += noOfFiveDollars[i];
          sum += noOfFiveDollars[i];

        }

      }
      if (sumUp === billsToGiveBack && sum !== 0) {
        dollarsToGiveBack.push(["FIVE", sum]);

      } else {
        while (sumUp > billsToGiveBack) {
          sumUp -= 5;
          sum -= 5;
        }
        if (sumUp < billsToGiveBack && sum !== 0) {
          dollarsToGiveBack.push(["FIVE", sum]);
        }
      }

    }


    let oneDollars = [cidBills[0]];
    console.log(oneDollars);

    if (sumUp < billsToGiveBack) {
      let sum = 0;

      for (i = 0; i <= 4; i++) {

        if (sumUp < billsToGiveBack) {
          sumUp += 1;
          sum += 1;
        }
      }
       if (sumUp === billsToGiveBack && sum !== 0) {
        dollarsToGiveBack.push(["ONE", sum]);

      }
      else {
        while (sumUp > billsToGiveBack) {
          sumUp -= 1;
          sum -= 1;
        }
        if (sumUp <= billsToGiveBack && sum !== 0) {
        dollarsToGiveBack.push(["ONE", sum]);
      }
      }
    }

    //coins to return

    let coinsToGiveBackCustomer = [];
    let sumUp2 = 0;

    let quarters = String([cidCoins[3][1]]);
    console.log(quarters);

    let quartersSplit = quarters.split(".");
    console.log(Number(quartersSplit[0]));


    if (sumUp2 < Number(Number(coinsToGiveBack).toFixed(2))) {


      let sum1 = 0;
      for (let i = 0; i <= Number(quartersSplit[0]); i++) {


        if (sumUp2 < Number(Number(coinsToGiveBack).toFixed(2))) {
          sumUp2 += 0.1
          sum1 += 0.1;
        }
      }
      if (Number(Number(sumUp2).toFixed(2)) === Number(Number(coinsToGiveBack).toFixed(2))) {
        coinsToGiveBackCustomer.push(["QUARTER", sum1]);
      } else {
        while (sumUp2 > Number(Number(coinsToGiveBack).toFixed(2))) {
          sumUp2 -= 0.1;
          sum1 -= 0.1
        }
        if (Number(Number(sumUp2).toFixed(2)) < Number(Number(coinsToGiveBack).toFixed(2)) && sum1 !== 0) {
          coinsToGiveBackCustomer.push(["QUARTER", Number(Number(sum1).toFixed(1))]);
        }
      }

    }


    let dimes = String([cidCoins[2][1]]);
    console.log(dimes);

    let dimesSplit = dimes.split(".");
    console.log(Number(dimesSplit[0]));

    if (sumUp2 < Number(Number(coinsToGiveBack).toFixed(2))) {

      let sum2 = 0;
      for (let i = 0; i <= Number(dimesSplit[0]); i++) {

        if (sumUp2 < Number(Number(coinsToGiveBack).toFixed(2))) {
          sumUp2 += 0.1;
          sum2 += 0.1;
        }
      }
      if (Number(Number(sumUp2).toFixed(2)) === Number(Number(coinsToGiveBack).toFixed(2))) {
        coinsToGiveBackCustomer.push(["DIME", sum2]);
      } else {
        while (sumUp2 > Number(Number(coinsToGiveBack).toFixed(2))) {
          sumUp2 -= 0.1;
          sum2 -= 0.1;
        }
        if (Number(Number(sumUp2).toFixed(2)) < Number(Number(coinsToGiveBack).toFixed(2)) && sum2 !== 0) {
          coinsToGiveBackCustomer.push(["DIME", Number(Number(sum2).toFixed(1))]);
        }

      }
    }


    let nickel = String([cidCoins[1][1]]);
    console.log(nickel);

    let nickelSplit = nickel.split(".");
    console.log(Number(nickelSplit[0]));

    if (sumUp2 < Number(Number(coinsToGiveBack).toFixed(2))) {
      let sum3 = 0;
      for (let i = 0; i <= Number(nickelSplit[0]); i++) {

        if (sumUp2 < Number(Number(coinsToGiveBack).toFixed(2))) {
          sumUp2 += 0.05
          sum3 += 0.05;

        }
      }
      if (Number(Number(sumUp2).toFixed(2)) === coinsToGiveBack) {
        coinsToGiveBackCustomer.push(["NICKEL", sum3]);
      } else {
        while (sumUp2 > coinsToGiveBack) {
          sumUp2 -= 0.05;
          sum3 -= 0.05;
        }
        if (Number(Number(sumUp2).toFixed(2)) < coinsToGiveBack && sum3 !== 0) {
          coinsToGiveBackCustomer.push(["NICKEL", sum3]);
        }
      }

    }


    let penny = String([cidCoins[0][1]]);
    console.log(penny);

    let pennySplit = penny.split(".");
    console.log(Number(pennySplit[0]));


    if (sumUp2 < Number(Number(coinsToGiveBack).toFixed(2))) {
      let sum4 = 0;
      for (let i = 0; i <= 3; i++) {

        if (sumUp2 < Number(Number(coinsToGiveBack).toFixed(2))) {
          sumUp2 += 0.01;
          sum4 += 0.01;

        }

      }

      if (Number(Number(sumUp2).toFixed(2)) === Number(Number(coinsToGiveBack).toFixed(2))) {
        coinsToGiveBackCustomer.push(["PENNY", sum4]);
      }
      else {
        while (sumUp2 > Number(Number(coinsToGiveBack).toFixed(2))) {
          sumUp2 -= 0.01;
          sum4 -= 0.01;
        }
        if (Number(Number(sumUp2).toFixed(2)) === Number(Number(coinsToGiveBack).toFixed(2)) && sum4 !== 0) {
          coinsToGiveBackCustomer.push(["PENNY", sum4]);
        }
      }
    }

       let total = [...dollarsToGiveBack, ...coinsToGiveBackCustomer]

       let add = 0;

       for(let i = 0; i < total.length; i++) {
           add += total[i][1]
       }
     
     if(Number(Number(add).toFixed(2)) === change) {
         return {
        status: "OPEN",
        change: [...dollarsToGiveBack, ...coinsToGiveBackCustomer]
         }
     }
     else  {
         return {
        status: "INSUFFICIENT_FUNDS",
        change: []
         }
     }
    }         
}
[/spoiler]

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]
]);

what is your output in the fcc editor?

@ilenia

// console output
96.74
96
0.74
ReferenceError: i is not defined
96.74
96
0.74
ReferenceError: i is not defined

why don’t you define i then?

it’s the risk of having always the same name for different variables, you don’t know which of the many

the browser console should also show which line the issue is at

@ieahleen Uh, i don’t get it? Haven’t I already defined i in the for loop below? :point_down:

 let total = [...dollarsToGiveBack, ...coinsToGiveBackCustomer]

       let add = 0;

       for(let i = 0; i < total.length; i++) {
           add += total[i][1]
       }
     
     if(Number(Number(add).toFixed(2)) === change) {
         return {
        status: "OPEN",
        change: [...dollarsToGiveBack, ...coinsToGiveBackCustomer]
         }
     }
     else  {
         return {
        status: "INSUFFICIENT_FUNDS",
        change: []
         }
     }

you use i 16 times, at least one of those you have forgot to define it

if you look at the browser console it will say in which line there is the issue

2 Likes

@ieahleen The Chrome browser console doesn’t show any errors? And I get the expected output (in chrome dev tools) for all the tests with the code I shared above.

have the browser console open when you run the tests

the dev tools are not using strict mode so you not get same error

1 Like

@ieahleen omg thanks a bunch! :pray: i finally see where i was going wrong!

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.