|
| 1 | +// Реализовать методы увеличения и уменьшения баланса, при котором каждая операция сохраняется в массив operations в виде { reason: 'Оплата налогов', sum: -100 }. |
| 2 | +// Возвращается true, если успешно и false, если не хватает баланса. Так же реализовать метод вывода числа операций по кошельку. |
| 3 | +// Основные компоненты: |
| 4 | +// Объект "Кошелек": Содержит начальный баланс (balance) и массив операций (operations). |
| 5 | +// Методы: |
| 6 | +// increase(sum, reason): Увеличивает баланс на sum, добавляет операцию с reason в массив operations. Возвращает true. |
| 7 | +// decrease(sum, reason): Уменьшает баланс на sum если достаточно средств, иначе возвращает false. Добавляет операцию с reason в массив operations при успехе. |
| 8 | +// getOperationLength(): Возвращает количество выполненных операций. |
| 9 | + |
| 10 | +const wallet = { |
| 11 | + balance: 0, |
| 12 | + operations: [], |
| 13 | + increase: function (sum, reason) { |
| 14 | + if (sum <= 0) { |
| 15 | + return false; // при увеличении сумма не может быть нулевой или отрицательной |
| 16 | + } |
| 17 | + |
| 18 | + this.balance += sum; |
| 19 | + this.operations.push({ reason, sum }); |
| 20 | + |
| 21 | + return true; |
| 22 | + }, |
| 23 | + decrease: function (sum, reason) { |
| 24 | + if (sum <= 0 || this.balance < sum) { |
| 25 | + return false; // не можем отнимать 0 и если на балансе меньше денег |
| 26 | + } |
| 27 | + |
| 28 | + this.balance -= sum; |
| 29 | + this.operations.push({ reason, sum: -sum }); |
| 30 | + |
| 31 | + return true; |
| 32 | + }, |
| 33 | + getOperationLength: function () { |
| 34 | + return this.operations.length; |
| 35 | + }, |
| 36 | + getBalance: function () { |
| 37 | + return this.balance; |
| 38 | + }, |
| 39 | +}; |
| 40 | + |
| 41 | +console.log(wallet.increase(1500, 'Пополнение баланса')); // true |
| 42 | +console.log(wallet.decrease(1600, 'Покупка ноутбука')); // false |
| 43 | +console.log(wallet.decrease(700, 'Покупка телефона')); // true |
| 44 | + |
| 45 | +console.log(wallet.operations); |
| 46 | +/* |
| 47 | +[ |
| 48 | +{ reason: 'Пополнение баланса', sum: 1500 }, |
| 49 | +{ reason: 'Покупка телефона', sum: -700 } |
| 50 | +] |
| 51 | +*/ |
| 52 | + |
| 53 | +console.log(wallet.getOperationLength()); // 2 |
| 54 | +console.log(wallet.getBalance()); // 800 |
0 commit comments