**Tell us what’s happening:**

Hello everyone. I’ve managed to come this far entirely on my own without looking up a single answer, but I’m completely stuck on the final challenge, and it’s getting tough to not cheat and look up an answer and learn from it that way…

I know that the function should be counting the amount of times a certain dollar bill fits into the change that should be returned, and I know that the amount of times a certain dollar bill is allowed to be used depends on what is passed in with the `cid`

. But how in god’s name do I manage this? There’s probably some way to do it with .map or .reduce but I’ve lost all sight of all possibilities. I’ve slept on this for a few days now and the urge to just cheat on this final one is overbearing.

Thank you so much for any possible hints.

```
**Your code so far**
```

```
function checkCashRegister(price, cash, cid) {
const index = [
["ONE HUNDRED", 100],
["TWENTY", 20],
["TEN", 10],
["FIVE", 5],
["ONE", 1],
["QUARTER", 0.25],
["DIME", 0.1],
["NICKEL", 0.05],
["PENNY", 0.01]
];
let change = cash - price;
let status;
let changeArr = [];
let changeObj = {};
let newCid = cid.reverse();
for (let i in index) {
let indexValue = index[i][1];
let indexUnit = index[i][0];
let indexResource = newCid[i][1];
let limit = indexResource / indexValue;
let acc = Math.floor(change / indexValue);
console.log(acc, limit);
let realAcc = acc * indexValue;
change -= realAcc;
changeArr.push([indexUnit, acc]);
}
/* for (let i in newCid) {
let cidValue = newCid[i][1];
console.log("Cycling cid. The cidValue is " + cidValue);
for (let j in index) {
let indexUnit = index[j][0];
let indexValue = index[j][1];
let acc = Math.floor(change / indexValue);
let realAcc = acc * indexValue;
console.log("Real value is " + realAcc);
if (realAcc <= cidValue && realAcc > 0 ) {
change -= acc * indexValue;
changeArr.push([indexUnit, realAcc]);
}
}
}*/
/* for (let i in cid) {
for (let j in changeArr) {
if (changeArr[j][0] == cid[i][0] && changeArr[j][1] == cid[i][1]) {
status = "CLOSED";
} else if (changeArr[j][0] == cid[i][0] && changeArr[j][1] > cid[i][1]) {
status = "INSUFFICIENT_FUNDS";
} else {
status = "OPEN";
}
}
} */
changeObj.status = status;
changeObj.change = changeArr;
return changeObj;
}
console.log(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]]));
```

```
**Your browser information:**
```

User Agent is: `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36`

**Challenge:** Cash Register

**Link to the challenge:**