问题
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
回答1:
var result = myObj.reduce((sum, next) => sum && next.status, true);
This should return true, if every value is true.
回答2:
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);
回答3:
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);
来源:https://stackoverflow.com/questions/41739710/find-sum-of-boolean-values-javascript-object-array