find sum of Boolean values JavaScript object array

2019-04-07 07:10发布

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,
  "status": true
}, {
  "id": 2,
  "day": 1,
  "status": false
}, {
  "id": 3,
  "day": 1,
  "status": false
}, {
  "id": 4,
  "day": 3,
  "status": false
}];

i want the sum of all status values using reduce function in JavaScript/ typescript

i want to show overall status as true only when all status are true else it should be false

3条回答
别忘想泡老子
2楼-- · 2019-04-07 07:50

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);

查看更多
仙女界的扛把子
3楼-- · 2019-04-07 08:14
var result = myObj.reduce((sum, next) => sum && next.status, true);

This should return true, if every value is true.

查看更多
不美不萌又怎样
4楼-- · 2019-04-07 08:14

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);

Update 1

For overall status in case of all statuses are true you should use every method:

var result = myObj.every(item => item.status);
查看更多
登录 后发表回答