查找布尔值 JavaScript 对象数组的总和



嗨,我正在尝试在 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 函数获得所有状态值的总和

我想仅在所有状态都为真时才将整体状态显示为真,否则它应该是假的

var result = myObj.reduce((sum, next) => sum && next.status, true);

如果每个值都为 true,则这应该返回 true。

如果你想求和,比如说,根据status标志day项目值,这可能看起来像:

var result = myObj.reduce((res, item) => item.status ? res + item.day : res, 0);

更新 1

对于所有状态为真的总体状态,您应该使用每种方法:

var result = myObj.every(item => item.status);

如果必须使用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则不会。

最新更新