javascript - total summa av värden i nästlade objekt i array
hur man summerar alla stationuserAmount-värden i den givna arrayen
"staions": [
{
"name": "Guwahati",
"stationuser": [
{
"name": "Suranjan Dey",
"stationuserAmount": "190"
}
]
},
{
"name": "Bhubaneshwar",
"stationuser": [
{
"name": "Soubhagya Behera",
"stationuserAmount": "280"
},
{
"name": "Om Prakash Sahoo",
"stationuserAmount": "280"
}
]
}
]
Jag testade med map och reduce på arrayvärden för att hitta den totala summan av den givna arrayen.
1) const salesuserTotalCount = this.state.staions.map(items => ({
users: items.stationuser.reduce((a, b) => {return
a.stationuserAmount+b.stationuserAmount}
)}))
2) const salesuserTotalCount = this.state.staions.map(items => ({
...items,
users: items.stationuser.map(stationitems
=>stationitems.stationuserAmount).reduce((a, c)
=> { return a + c })}))
Svar #1
Du kan göra reduce inuti reduce
const stations = [
{
"name": "Guwahati",
"stationuser": [
{
"name": "Suranjan Dey",
"stationuserAmount": 190
}
]
},
{
"name": "Bhubaneshwar",
"stationuser": [
{
"name": "Soubhagya Behera",
"stationuserAmount": 280
},
{
"name": "Om Prakash Sahoo",
"stationuserAmount": 280
}
]
}
]
console.log(stations.reduce((acc, curr)=>{
return acc+curr.stationuser.reduce((a,c)=>a+c.stationuserAmount,0)
},0));Svar #2
Du kan göra det ganska enkelt med en nästlad karta.
const data = { "stations": [
{
"name": "Guwahati",
"stationuser": [
{
"name": "Suranjan Dey",
"stationuserAmount": 190
}
]
},
{
"name": "Bhubaneshwar",
"stationuser": [
{
"name": "Soubhagya Behera",
"stationuserAmount": 280
},
{
"name": "Om Prakash Sahoo",
"stationuserAmount": 280
}
]
}
]
}
let sum = 0
data.stations.map(station => {
station.stationuser.map(user => sum += user.stationuserAmount)
})
console.log(sum)