банкомат js. Помогите найти ошибку, ломается на 150 и 50
// Нужно написать функцию банкомат // * первым аргументом ты передаешь ей сколько ты хочешь снять // * вторым массив доступным банкнот в баномате // Функция должна вернуть массив из банкнот сумма которых ровна первому аргументу // При передаче банкнот, мы даем их кол-во, которое надо учитывать при выдачи суммы atm(304, {100:2, 50:10, 2:1, 1:5}) // => [100,100,50,50,2,1,1]
function atm(banknote, banknotesInStock) {
let cashArr = [];
let cashTotal = null;
let valueBank = banknote;
let result = [];
Object.keys(banknotesInStock).forEach((item) => {
let cashItem = [];
cashItem.push(item, banknotesInStock[item]);
cashArr.push(cashItem);
});
cashArr.reverse();
cashTotal = cashArr.map((item) => {
return item[0] * item[1];
}).reduce((sum, cur) => {
return sum + cur;
});
if (banknote > cashTotal) {
console.log('Нет столько бабла, сорри');
} else {
cashArr.forEach((item) => {
if (valueBank / item[0] >= item[1]) {
valueBank = valueBank - (+item[0] * item[1]);
let i = 0;
while (i < item[1]) {
result.push(item[0]);
i++;
}
} else {
let c = Math.round(valueBank / +item[0]);
console.log(`c = ${c}`);
let y = 0;
valueBank = valueBank - (c * +item[0]);
while (y < c) {
result.push(item[0]);
y++;
}
}
});
let check = result.map(Number).reduce((sum, cur) => {
return sum + cur;
}, 0);
if (check !== banknote) {
console.log(`Я не могу дать эту сумму ${check}`);
} else {
console.log(result);
}
//console.log(result);
}
}
atm(50, {
100: 2,
50: 10,
2: 1,
1: 5
}) // => [100,100,50,50,2,1,1]
https://codepen.io/sophie-lamperg/pen/WNGEXpP