Open Mind for Optimize

Tell us what’s happening:
My code does pass the test, I am posting it here for help and hope I can get some advice from you guys to make it more tidy(short)

  **Your code so far**

const currencyUnit = {
PENNY: 0.01, NICKEL: 0.05, DIME: 0.1, QUARTER:0.25, ONE:1, FIVE:5, TEN:10, TWENTY:20, 'ONE HUNDRED':100
}

function checkCashRegister(price, cash, cid) {
let change = cash - price;
console.log(change - (change%20) )
let cashAvailable = 0;
const availableChanges = cid.filter(ele =>{
  return change % currencyUnit[ele[0]] !== change;
})  
for(let i = 0;i<availableChanges.length;i++){
  cashAvailable += availableChanges[i][1];
}
let result = {
  status: ' ',
  change: []
}
if(change > cashAvailable){
  result.status = 'INSUFFICIENT_FUNDS';
}else if(change === cashAvailable){
  result['status'] = 'CLOSED';
  result['change'] = cid;
}else{
  result['status'] = 'OPEN';
  result['change'] = breakChange(change,availableChanges);
}
console.log(result) 
return result;
}

function breakChange(change,arr){
let changeArr = [];
const descendingArr = arr.reverse();
for(let i = 0;i<descendingArr.length;i++){
  let unitAmount = descendingArr[i][1];
  let unitName = descendingArr[i][0]
  if(change >= unitAmount){
    changeArr.push(descendingArr[i]);
    change -= unitAmount;
  }else{
    let changeRemain = change % currencyUnit[unitName];
    if(changeRemain === 0){
      changeArr.push([unitName,change]);
      break;
    }else if (changeRemain !== change){
      let value = change - changeRemain;
      changeArr.push([unitName,value]);
      change = Math.round(changeRemain * 100)/100;
    }
  }  
}
return (changeArr);
}
  **Your browser information:**

User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36

Challenge: Cash Register

Link to the challenge:

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