Reputation: 19
I have an array of objects:
var array = [
{name: 'test1', day1: true, day2: true, day3: false, day4: true, day5: false},
{name: 'test2', day1: false, day2: true, day3: false, day4: false, day5: true},
{name: 'test3', day1: true, day2: false, day3: false, day4: true, day5: false},
]
How to create new object with count true values by day
var result = {
day1: 2,
day2: 2,
day3: 0,
day4: 2,
day5: 1
}
Upvotes: 0
Views: 84
Reputation: 8751
You can use Array.reduce()
var array = [
{name: 'test1', day1: true, day2: true, day3: false, day4: true, day5: false},
{name: 'test2', day1: false, day2: true, day3: false, day4: false, day5: true},
{name: 'test3', day1: true, day2: false, day3: false, day4: true, day5: false},
]
const output = array.reduce((acc, cur) => {
Object.keys(cur).forEach(key => {
if (key !== 'name') {
if (!acc[key]) acc[key] = 0;
if (cur[key]) acc[key] ++;
}
});
return acc;
}, {});
console.log(output);
Upvotes: 1