After trying for so long to solve Exact Change problem, I am stuck with this test
checkCashRegister(19.50, 20.00, [["PENNY", 0.01], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0.50], ["ONE", 1.00], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]]);
Can someone please tell me what I am not doing right?
Thanks
the full solution is below:
function checkCashRegister(price, cash, cid) {
  var change = cash - price;
  var totalcid = totalCid(cid);
  // console.log(change);
  var output = [];
  if(totalcid < change){
    return "Insufficient Funds";
  }
  if(change === totalcid){
    return "Closed";
  }
  
  for(var i = cid.length - 1; i >= 0; i--){
    
    var currencyUnit = interpretCurrency(cid[i][0]);
    
    // var remainder = change;
    var buffer = cid[i];
    // console.log(buffer);
    // console.log("change " +change);
    // console.log("currencyUnit " +currencyUnit);
    if(currencyUnit <= change){
      // console.log("change " +change);
      // console.log("currencyUnit " +currencyUnit);
      var returnUnits = 0;
      while((change / currencyUnit >= 1) && (cid[i][1] > 0)){
        change -= currencyUnit;
        change = change.toFixed(2);
        cid[i][1] -= currencyUnit;
        returnUnits++;
      }
      
      buffer[1] = returnUnits * currencyUnit;
      
      output.push(buffer);
    }
    
    
  }
  
  return output;
}
checkCashRegister(19.50, 20.00, [["PENNY", 0.01], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0.50], ["ONE", 1.00], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]]);
function totalCid(arr){
  var total = 0;
  for(var i = 0; i < arr.length; i++){
    total += arr[i][1];
  }
  
  return total;
}
function interpretCurrency(str){
  var result = 0;
  switch(str) {
    case "PENNY":
      result = 0.01;
      break;
    case "NICKEL":
      result = 0.05;
      break;
    case "DIME":
      result = 0.10;
      break;
    case "QUARTER":
      result = 0.25;
      break;
    case "ONE":
      result = 1;
      break;
    case "FIVE":
      result = 5;
      break;
    case "TEN":
      result = 10;
      break;
    case "TWENTY":
      result = 20;
      break;
    case "ONE HUNDRED":
      result = 100;
      break;
    default:
      result = 0;
  }
  
  return result;
  
}
            
