Count the number of true members in an array of boolean values

gitmole picture gitmole · Feb 18, 2017 · Viewed 21.7k times · Source

New to javascript and I'm having trouble counting the number of trues in an array of boolean values. I'm trying to use the reduce() function. Can someone tell me what I'm doing wrong?

   //trying to count the number of true in an array
    myCount = [false,false,true,false,true].reduce(function(a,b){
      return b?a++:a;
    },0);
    alert("myCount ="+ myCount);  // this is always 0

Answer

kind user picture kind user · Feb 18, 2017

Seems like your problem is solved already, but there are plenty of easier methods to do it.

Excellent one:

.filter(Boolean); // will keep every truthy value in an array

const arr = [true, false, true, false, true];
const count = arr.filter(Boolean).length;

console.log(count);

Good one:

const arr = [true, false, true, false, true];
const count = arr.filter((value) => value).length;

console.log(count);

Average alternative:

let myCounter = 0;

[true, false, true, false, true].forEach(v => v ? myCounter++ : v);

console.log(myCounter);