Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

251
Views
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,

{
  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
    }
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

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 ( + )

about 4 years ago · Juan Pablo Isaza Report

0

You can try this:

let countPixel = 0;
let countDraw = 0;
const res = arr.reduce(function (
    acc,
    curr
  ) {
    if (curr.pixel == true) {
        countPixel++;
    }  
    if (curr.draw == true) {
        countDraw++;
    }
    return {
        tooltip: acc.tooltip + curr.tooltip,
        points: acc.points + curr.points,
        pixel: countPixel,
        draw: countDraw,
    };
});
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!