Cash register function

$
$
Cash in drawer (cid)
$
$
$
$
$
$
$
$
$
Function call:
 
Returns:
 

I created this function as a requirement for my freeCodeCamp JavaScript Algorithms and Data Structures Certification. Output isn't terribly human-readable, but, well, human-readable wasn't part of the requirements. I suppose cash registers don't really speak English, though, so I guess that's okay. Here are the requirements I built to:

  • Design a cash register drawer function checkCashRegister() that accepts purchase price as the first argument (price), payment as the second argument (cash), and cash-in-drawer (cid) as the third argument.
  • cid is a 2D array listing available currency.
  • The checkCashRegister() function should always return an object with a status key and a change key.
  • Return {status: "INSUFFICIENT_FUNDS", change: []} if cash-in-drawer is less than the change due, or if you cannot return the exact change.
  • Return {status: "CLOSED", change: [...]} with cash-in-drawer as the value for the key change if it is equal to the change due.
  • Otherwise, return {status: "OPEN", change: [...]}, with the change due in coins and bills, sorted in highest to lowest order, as the value of the change key.