-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy path4-deep.js
More file actions
49 lines (45 loc) · 1.13 KB
/
4-deep.js
File metadata and controls
49 lines (45 loc) · 1.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
'use strict';
const calculateTotal = (order) => {
const items = Array.isArray(order) ? order : Object.values(order);
return items.reduce((sum, item) => {
if (typeof item.price === 'number') return sum + item.price;
else return sum + calculateTotal(item);
}, 0);
};
const purchase = [
{
Electronics: {
Computers: [
{ name: 'Laptop', price: 1500 },
{ name: 'Desktop', price: 1200 },
],
Accessories: [
{ name: 'Mouse', price: 25 },
{ name: 'Keyboard', price: 100 },
{ name: 'Webcam', price: 50 },
[
{ name: 'HDMI cable', price: 10 },
{ name: 'USB Hub', price: 20 },
],
],
},
Textile: [
{ name: 'Bag', price: 50 },
{ name: 'Mouse pad', price: 5 },
{ name: 'Laptop Sleeve', price: 20 },
],
},
{ name: 'T-shirt', price: 15 },
{ name: 'Cap', price: 12 },
{ name: 'Jacket', price: 60 },
];
const main = async () => {
try {
console.dir(purchase, { depth: null });
const total = calculateTotal(purchase);
console.log({ total });
} catch (err) {
console.error(err);
}
};
main();