I'm returning JSON data from an API. I am then using map to create my own object.
The data has multiple objects. Here is an example:
{
"data": {
"job": [
{
"jobNumber": "1",
"jobTasks": {
"jobTask": [
{
"total": { "amountString": "10.00" }
},
{
"total": { "amountString": "10.00" }
}
]
}
},
{
"jobNumber": "2",
"jobTasks": {
"jobTask": [
{
"total": { "amountString": "20.00" }
},
{
"total": { "amountString": "20.00" }
}
]
}
},
{
"jobNumber": "3",
"jobTasks": {
"jobTask": [
{
"total": { "amountString": "30.00" }
},
{
"total": { "amountString": "30.00" }
}
]
}
}
]
}
}
As from that returned example, I want to have the following:
jobNumber: 1: Total 20. jobNumber: 2: Total 40. jobNumber: 3: Total 60.
Here is the code I am using:
var array = response.data.map(function(item, array) {
var sumTaskTotal = item.jobTasks.reduce(function(sumTaskTotal, item, index) {
if (item !== null && item.total !== null) {
sumTaskTotal += item.total.amountString;
return sumTaskTotal;
}
}, 0);
array = response.data.map(item => ({
jobNumber: item.jobNumber,
sumTaskTotal: sumTaskTotal,
}));
}
However the sum I am using just keeps summing, so I end up with:
jobNumber: 1: Total 120. jobNumber: 120: Total 120. jobNumber: 3: Total 120.
I have tried for loops but that doesn't seem to get me anywhere.
{ jobNumber: Number, sumTaskTotal: Number }or a stringjobNumber: 1: Total 20. jobNumber: 2: Total 40. jobNumber: 3: Total 60.?