Мне нужна помощь с моим кодом для участия в Cash Register Challenge на FreeCodeCamp.Я прохожу другие проверки, кроме тех, которые для "ОТКРЫТЫ"
Для второй проверки я получаю правильную разбивку ["КВАРТАЛ": 0.25], ["КВАРТАЛ": 0.25] т.е. два квартала, но я нене знаю, как сложить это вместе и вернуть как ["QUARTER": 0.5].
В третьих, разбивка почти налицо, но она не отнимает последнюю копейку, поэтому мне не хватает одной ["PENNY«: 0.01] от окончательной разбивки.Когда я проверяю оставшиеся изменения, это одна копейка.
Так что мне действительно нужна помощь, чтобы вернуть изменение как объединенное значение для каждого типа единиц и посмотреть, почему оно не возвращает общую сумму в третьем случае.
function checkCashRegister(price, cash, cid) {
var cashAvailable = cid;
var units = [
["PENNY", 0.01],
["NICKEL", 0.05],
["DIME", 0.1],
["QUARTER", 0.25],
["ONE", 1],
["FIVE", 5],
["TEN", 10],
["TWENTY", 20],
["ONE HUNDRED", 100]
].reverse()
var cashAvailable = cid.slice().reverse()
var stat = {
status: '',
change: []
};
var changeRequired = cash - price;
var totalCash = cashAvailable.flat().filter(x => {
return isNaN(x) == false
}).reduce((a, b) => {
return a + b
}).toFixed(2)
var unitsNeeded = []
if (totalCash == changeRequired) {
stat.status = 'CLOSED'
stat.change = cid
} else if (totalCash < changeRequired) {
stat.status = 'INSUFFICIENT_FUNDS'
stat.change = []
} else if (totalCash > changeRequired) {
for (var i = 0; i < units.length; i++) {
while (changeRequired >= units[i][1] && cashAvailable[i][1] > 0) {
unitsNeeded.push(units[i])
cashAvailable[i][1] -= units[i][1]
console.log((changeRequired -= units[i][1]).toFixed(2))
}
if (changeRequired > units[8][1]) {
stat.status = 'INSUFFICIENT_FUNDS'
stat.change = []
} else {
stat.status = 'OPEN';
stat.change = unitsNeeded
}
}
}
return stat
}
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]
])
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]
])
это две проверки.