Home > Software engineering >  total sum of nested object value in array
total sum of nested object value in array

Time:02-15

how to sum of the all the stationuserAmount values in the given array

            "staions": [
                {
                    "name": "Guwahati",                        
                    "stationuser": [
                        {
                            "name": "Suranjan Dey",                                
                            "stationuserAmount": 190
                        }        
                       
                    ]
                },                                     
                {
                    "name": "Bhubaneshwar",                        
                    "stationuser": [
                        {
                            "name": "Soubhagya Behera",                                
                            "stationuserAmount": 280
                        },
                        {
                            "name": "Om Prakash Sahoo",                                
                            "stationuserAmount": 280
                        }
                    ]
                }             
            ]

I was tried with map and reduce on array values to find the total sum of the given array.

    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 })}))

CodePudding user response:

You can do reduce inside 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));

CodePudding user response:

You can do it quite easily with a nested map.

      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)

  • Related