My code returns the right answers but FCC doensn’t accept it. Can someone explain why?
const cidToValue = (cid)=>
{let newArr = [ ];
for(let i = 0 ; i<cid.length;i++){
newArr[i]= cid[i].toString();
newArr[i]= newArr[i].match(/[0-9].*/g);
newArr[i]= newArr[i].join("");
newArr[i] = parseFloat(newArr[i], 10);
}
const reducer = (a,b) => a + b;
let b = newArr.reduce(reducer);
b=b.toFixed(2);
return b;
}
const valueToCid = (change,cid) => {
let newArr = [ ];
for(let i = 0 ; i<cid.length;i++){
newArr[i]= cid[i].toString();
newArr[i]= newArr[i].match(/[0-9].*/g);
newArr[i]= newArr[i].join("");
newArr[i] = parseFloat(newArr[i], 10);
}
let values = [0.01,0.05,0.1,0.25,1,5,10,20,100];
let count = [0,0,0,0,0,0,0,0,0];
let names =[["PENNY"], ["NICKEL"], ["DIME"], ["QUARTER"], ["ONE"], ["FIVE"], ["TEN"], ["TWENTY"], ["ONE HUNDRED"]];
let save = change;
let y = values.length-1;
if (change > 0){
while (change>0){
if(change >= values[y] && newArr[y]> (count[y] *values[y]))
{count[y]++;
change = change-values[y];
}
else y--;}
}
if (change > 0){
count[0]++;
}
let final = [];
for(let i = 9; i >=0;i--){
if(values[i]*count[i] > 0){
final.push([names[i], values[i]*count[i]]);
}
}
if(cidToValue(final) != save){
return false};
return final;
}
function checkCashRegister(price, cash, cid) {
let change = cash - price;
// Here is your change, ma'am.
let output = {
status : null,
change : []
}
if(change > cidToValue(cid)) {output.status = "INSUFFICIENT_FUNDS"; output.change = []; return output}
else if (!valueToCid(change,cid)) {output.status = "INSUFFICIENT_FUNDS"; output.change = []; return output}
else if ( change == cidToValue(cid)){output.status = "CLOSED"; output.change = cid; return output}
else {output.status = "OPEN"; output.change = valueToCid(change,cid);console.log((output.change)); 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]])