'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
}
Solution 1:[1]
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,
};
});
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | ?oàn ??c B?o |
