Help in Cash Register coding

Tell us what’s happening:
the code works in three cases and two cases doen’t work

Your code so far


var denom=[
  {name:"one Hundred",val:100.00},
  {name:"twenty",val:20.00},
  {name:"ten",val:10.00},
  {name:"five",val:5.00},
  {name:"one",val:1.00},
  {name:"quarter",val:0.25},
  {name:"Dime",val:0.10},
  {name:"Nickel",val:0.05},
  {name:"Penny",val:0.01}
]

function checkCashRegister(price, cash, cid) {
  var change=cash-price;
  var output={status:null,change:[]};
  var register={total:0};
  cid.forEach( (array)=>{
    var key=array[0];
    var value=array[1];
    register[key]=value;
    register.total+=value;
  });
  
  //change< cid
  if(register.total<change){
    output.status="INSUFFICIENT_FUNDS";
    return output;
  }
  //change=cid
  if(register.total===change){
    output.status="CLOSED";
    output.change=cid;
    return output;
  }
  cid=cid.reverse();
  //change >cid
  //loop through the denom array 
  var result=[];
  denom.forEach( function(subArray){
var value=0;
var currentValueInRegister=register[subArray.name];
var currencyValue=subArray.val;
while(currentValueInRegister >0 &&change>=currencyValue){
  change-=currencyValue;
  register[subArray.name]-=currencyValue;
  value+=currencyValue;

change=Math.round(change*100)/100;

}
if (value>0){
  result.push([subArray.name,value]);
}
return result;
  })
  if(result.length < 1 ||change>0){
output.status="INSUFFICIENT_FUNDS";
return output;

  }
 else{ output.status="OPEN";
  output.change=result;
  return output;  
 }
}

// Example cash-in-drawer array:
// [["PENNY", 1.01],
// ["NICKEL", 2.05],
// ["DIME", 3.1],
// ["QUARTER", 4.25],
// ["ONE", 90],
// ["FIVE", 55],
// ["TEN", 20],
// ["TWENTY", 60],
// ["ONE HUNDRED", 100]]

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 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36.

Link to the challenge:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/javascript-algorithms-and-data-structures-projects/cash-register/

Hi, Your shorthand assignment operators have a space (+ = vs +=) so they aren’t working. In cases of CLOSED or INSUFFICIENT_FUNDS the function returns early and that code is never executed so it works there. In other cases your code halts when it encounters one of those operators.