求布尔值总和 JavaScript 对象数组
find sum of Boolean values JavaScript object array
您好,我正在尝试在 JavaScript
中的对象数组中查找布尔值的总和
我的 json 喜欢
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
}];
我想要在 JavaScript/打字稿
中使用 reduce 函数的所有 status 值的总和
我想仅在所有状态都为真时才显示总体 状态为真,否则它应该为假
如果你想求和,比如说,day
项目值取决于 status
标志,这看起来像:
var result = myObj.reduce((res, item) => item.status ? res + item.day : res, 0);
更新 1
对于总体状态,如果所有状态都为真,您应该使用每种方法:
var result = myObj.every(item => item.status);
var result = myObj.reduce((sum, next) => sum && next.status, true);
如果每个值都为真,这应该 return 为真。
如果你必须使用reduce
,你可以利用x*false == 0
这一事实,因此你可以执行以下操作:
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);
您可以将 Array.some
与谓词 a => !a.status
一起使用,或将 Array.every
与谓词 a => a.status
结合使用。
如果您发现不匹配,它们中的任何一个都会短路,而 Array.reduce
则不会。
您好,我正在尝试在 JavaScript
中的对象数组中查找布尔值的总和我的 json 喜欢
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
}];
我想要在 JavaScript/打字稿
中使用 reduce 函数的所有 status 值的总和我想仅在所有状态都为真时才显示总体 状态为真,否则它应该为假
如果你想求和,比如说,day
项目值取决于 status
标志,这看起来像:
var result = myObj.reduce((res, item) => item.status ? res + item.day : res, 0);
更新 1
对于总体状态,如果所有状态都为真,您应该使用每种方法:
var result = myObj.every(item => item.status);
var result = myObj.reduce((sum, next) => sum && next.status, true);
如果每个值都为真,这应该 return 为真。
如果你必须使用reduce
,你可以利用x*false == 0
这一事实,因此你可以执行以下操作:
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);
您可以将 Array.some
与谓词 a => !a.status
一起使用,或将 Array.every
与谓词 a => a.status
结合使用。
如果您发现不匹配,它们中的任何一个都会短路,而 Array.reduce
则不会。