-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsalesTax.js
71 lines (65 loc) · 1.43 KB
/
salesTax.js
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
var companySalesData = [
{
name: "Telus",
province: "BC",
sales: [ 100, 200, 400 ]
},
{
name: "Bombardier",
province: "AB",
sales: [ 80, 20, 10, 100, 90, 500 ]
},
{
name: "Telus",
province: "SK",
sales: [ 500, 100 ]
}
]
var salesTaxRates = {
AB: 0.05,
BC: 0.12,
SK: 0.10
}
function calculateSalesTax(salesData, taxRates) {
//new object results
let finances = {}
//in results create key from original object key "name" made of empy object
for (i = 0; i < salesData.length; i++) {
var company = [salesData[i]["name"]]
finances[company] = {}
}
for (each of salesData) {
howManySales = each.sales.length
arrayOfSales = each.sales
let totalSales = 0
for (i = 0; i < howManySales; i++) {
totalSales += arrayOfSales[i]
}
taxRate = taxRates[each.province]
totalTaxes = taxRate * totalSales
if (!finances[each.name].totalSales) {
finances[each.name].totalSales = totalSales
} else {
finances[each.name].totalSales += totalSales
}
if (!finances[each.name].totalTaxes) {
finances[each.name].totalTaxes = totalTaxes
} else {
finances[each.name].totalTaxes += totalTaxes
}
}
console.log(finances)
}
var results = calculateSalesTax(companySalesData, salesTaxRates)
/* Expected Results:
{
Telus: {
totalSales: 1300
totalTaxes: 144
},
Bombardier: {
totalSales: 800,
totalTaxes: 40
}
}
*/