Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

map reduce count and sum of array of objects

i have an array of objects which has properties with boolean and some properties with integer values. For eg

const arr = [{
    _id: "621bb15de2ecadf024da51d3",
    draw: false,
    pixel: false,
    tooltip: 1,
    points: 1,
    
  },
  {
    _id: "621bb15de2ecadf024da51d8",
    draw: false,
    pixel: true,
    tooltip: 0,
    points: 1,
    
  },
  {
    _id: "621bb15de2ecadf024da51da",
    draw: false,
    pixel: true,
    tooltip: 1,
    points: 1,
    
  },
  {
    _id: "621bb15de2ecadf024da51e5",
    draw: false,
    pixel: true,
    tooltip: 0,
    points: 1,
    
  },
  {
    _id: "621bb15de2ecadf024da51f8",
    draw: false,
    pixel: true,
    tooltip: 1,
    points: 1,
    
  },
  {
    _id: "621bb15ee2ecadf024da5222",
    draw: false,
    pixel: true,
    tooltip: 0,
    points: 1,
    
  },
  {
    _id: "621bb15ee2ecadf024da5230",
    draw: false,
    pixel: true,
    tooltip: 1,
    points: 1,
    
  },
  {
    _id: "621bb15fe2ecadf024da52f3",
    draw: false,
    pixel: false,
    tooltip: 1,
    points: 1,
    
  },
  {
    _id: "621bb160e2ecadf024da5375",
    draw: false,
    pixel: true,
    tooltip: 0,
    points: 1,
  }
]

I am trying to achieve sum of tooltip and points, also count of draw and pixel where they are true.

const res = arr.reduce(function (
          acc,
          curr
        ) {
          return {
            tooltip: acc.tooltip + curr.tooltip,
            points:
              acc.points +
              curr.points,
          };
        });

I am getting output as below which is correct for sum,

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

{
  points: 9,
  tooltip: 5
}

but i also want count of draw and pixel where its value true.

Expected Result:
{
      points: 9,
      tooltip: 5,
      pixel: 7,
      draw: 0
    }

>Solution :

Just use the same way as you did with tooltip and point, since with + operator between 2 boolean values, these boolean values will be coerced to integer

const arr = [ { _id: '621bb15de2ecadf024da51d3', draw: false, pixel: false, tooltip: 1, points: 1, }, { _id: '621bb15de2ecadf024da51d8', draw: false, pixel: true, tooltip: 0, points: 1, }, { _id: '621bb15de2ecadf024da51da', draw: false, pixel: true, tooltip: 1, points: 1, }, { _id: '621bb15de2ecadf024da51e5', draw: false, pixel: true, tooltip: 0, points: 1, }, { _id: '621bb15de2ecadf024da51f8', draw: false, pixel: true, tooltip: 1, points: 1, }, { _id: '621bb15ee2ecadf024da5222', draw: false, pixel: true, tooltip: 0, points: 1, }, { _id: '621bb15ee2ecadf024da5230', draw: false, pixel: true, tooltip: 1, points: 1, }, { _id: '621bb15fe2ecadf024da52f3', draw: false, pixel: false, tooltip: 1, points: 1, }, { _id: '621bb160e2ecadf024da5375', draw: false, pixel: true, tooltip: 0, points: 1, }, ]

const res = arr.reduce(function (acc, curr) {
  return {
    tooltip: acc.tooltip + curr.tooltip,
    points: acc.points + curr.points,
    draw: acc.draw + curr.draw,
    pixel: acc.pixel + curr.pixel,
  }
})

console.log(res)

References

12.8.3 The Addition Operator ( + )

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading