function checkCashRegister(price, cash, cid) {
var register = [
["ONE HUNDRED", 100, cid[8][1]],
["TWENTY", 20, cid[7][1]],
["TEN", 10, cid[6][1]],
["FIVE", 5, cid[5][1]],
["ONE", 1, cid[4][1]],
["QUARTER", 0.25, cid[3][1]],
["DIME", 0.10, cid[2][1]],
["NICKEL", 0.05, cid[1][1]],
["PENNY", 0.01, cid[0][1]]
]
var insuf = "INSUFFICIENT_FUNDS";
var closed = "CLOSED";
var open = "OPEN";
var totalRegister = register.reduce((sum, i) => sum + i[2], 0).toFixed(2);
var answer = {status: "INSUFFICIENT_FUNDS", change: []};
var change = Math.abs(price - cash);
var newArr = []
var count = 0
if (totalRegister == change) {
answer.status = closed;
answer.change = cid;
} else if (totalRegister < change) {
answer.status = insuf
} else if (totalRegister > change) {
for (var i of register) {
while (change >= i[1] && i[2] > 0) {
change = Math.round(change*100)/100;
change -= i[1];
i[2] -= i[1];
var subArr = []
subArr.push(i[0], i[1]);
}
if (subArr) {
newArr.push(subArr)
}
}
}
console.log(newArr)
return answer
}
所以我上面的代码几乎把我带到了我需要去的地方,并将下面的代码记录到控制台;
[ [ 'TWENTY', 20 ],
[ 'TEN', 10 ],
[ 'FIVE', 5 ],
[ 'ONE', 1 ],
[ 'QUARTER', 0.25 ],
[ 'DIME', 0.1 ],
[ 'DIME', 0.1 ],
[ 'PENNY', 0.01 ] ]
以此为输入;
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]]));
IT 会记录我正在处理的货币的面额,但我需要计算我使用该面额的次数的总和。我需要的其余代码字,如果我可以进行必要的更改,然后更改答案键,我将能够解决。它还会两次记录一角钱的价值,我不知道为什么。谁能指出我正确的方向?
胡说叔叔
相关分类