1 回答

TA贡献1804条经验 获得超8个赞
原因是在subArr.push(i[0], i[1]);你用 推动货币的价值时i[1],你需要找到该货币面额是否已经存在,并增加它的计数。您可以为此目的使用地图数据结构,如下所示:
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.1, 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 map = new Map();
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];
if (map.get(i[0])) {
map.set(i[0], map.get(i[0]) + 1);
} else {
map.set(i[0], 1)
}
}
}
}
newArr = [...map]
console.log(newArr);
return answer;
}
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],
])
);
添加回答
举报