Skip to content

Commit f7d072a

Browse files
committed
[EX-13.6/st-compl] adding-obj-wallet-methods
Adding obj "wallet" methods. Increase/decrease, output transactions. Worth noting: - possibilities of methods. FS-dev: B-3 / JS basic
1 parent 26fb869 commit f7d072a

File tree

1 file changed

+54
-0
lines changed
  • full-stack-dev/3-js-basic/13-objects/13-6-ex-adding-obj-wallet-methods

1 file changed

+54
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
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

Comments
 (0)