Hi i am trying to find the sum of Boolean values in the object array in JavaScript
My json like be
var myoBj = [{
\"id\": 1,
\"day\": 1,
\"st
var result = myObj.reduce((sum, next) => sum && next.status, true);
This should return true, if every value is true.
If you must use reduce
you can take advantage of the fact that x*false == 0
, and so you can do the following:
const myObj=[{id:1,day:1,status:true},{id:2,day:1,status:false},{id:3,day:1,status:false},{id:4,day:3,status:false}],
res = !!myObj.reduce((bool, {status}) => bool*status, true);
console.log(res);
You could use Array.some
with predicate a => !a.status
or Array.every
with predicate a => a.status
.
Either of them will short-circuit if you find a mismatch, while Array.reduce
will not.
If you want to sum lets say, day
items value depending on the status
flag, this can looks like:
var result = myObj.reduce((res, item) => item.status ? res + item.day : res, 0);
For overall status in case of all statuses are true you should use every method:
var result = myObj.every(item => item.status);