Skip to content

Commit f84e1f3

Browse files
committed
Add examples
1 parent e8e149c commit f84e1f3

4 files changed

Lines changed: 84 additions & 0 deletions

File tree

‎JavaScript/3-js-way.js‎

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
'use strict';
2+
3+
const calculateTotal = (order) => {
4+
let total = 0;
5+
for (const groupName in order) {
6+
const goods = order[groupName];
7+
total += goods.reduce((sum, { price }) => (sum + price), 0);
8+
}
9+
return total;
10+
};
11+
12+
const purchase = {
13+
Electronics: [
14+
{ name: 'Laptop', price: 1500 },
15+
{ name: 'Mouse', price: 25 },
16+
{ name: 'Keyboard', price: 100 },
17+
{ name: 'HDMI cable', price: 10 },
18+
],
19+
Textile: [
20+
{ name: 'Bag', price: 50 },
21+
{ name: 'Mouse pad', price: 5 },
22+
],
23+
};
24+
25+
const main = async () => {
26+
try {
27+
console.log(purchase);
28+
const total = calculateTotal(purchase);
29+
console.log({ total });
30+
} catch (err) {
31+
console.error(err);
32+
}
33+
};
34+
35+
main();

‎JavaScript/4-deep.js‎

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
'use strict';
2+
3+
const calculateTotal = (order) => {
4+
const items = Array.isArray(order) ? order : Object.values(order);
5+
return items.reduce((sum, item) => {
6+
if (typeof item.price === 'number') return sum + item.price;
7+
else return sum + calculateTotal(item);
8+
}, 0);
9+
};
10+
11+
const purchase = [
12+
{
13+
Electronics: {
14+
Computers: [
15+
{ name: 'Laptop', price: 1500 },
16+
{ name: 'Desktop', price: 1200 },
17+
],
18+
Accessories: [
19+
{ name: 'Mouse', price: 25 },
20+
{ name: 'Keyboard', price: 100 },
21+
{ name: 'Webcam', price: 50 },
22+
[
23+
{ name: 'HDMI cable', price: 10 },
24+
{ name: 'USB Hub', price: 20 },
25+
],
26+
],
27+
},
28+
Textile: [
29+
{ name: 'Bag', price: 50 },
30+
{ name: 'Mouse pad', price: 5 },
31+
{ name: 'Laptop Sleeve', price: 20 },
32+
],
33+
},
34+
{ name: 'T-shirt', price: 15 },
35+
{ name: 'Cap', price: 12 },
36+
{ name: 'Jacket', price: 60 },
37+
];
38+
39+
const main = async () => {
40+
try {
41+
console.dir(purchase, { depth: null });
42+
const total = calculateTotal(purchase);
43+
console.log({ total });
44+
} catch (err) {
45+
console.error(err);
46+
}
47+
};
48+
49+
main();

0 commit comments

Comments
 (0)