R2D2
R2D2

Reputation: 19

How to count true property values in list of objects

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

Answers (1)

wangdev87
wangdev87

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

Related Questions