web-dev-qa-db-ja.com

ブール値の合計を見つける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/TypeScriptのreduce関数を使用してすべてのstatus値の合計が必要です

全体を表示したいステータスをtrueとしてすべてのステータスがtrueの場合のみ、それ以外の場合はfalseにする必要があります

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

すべての値がtrueの場合、これはtrueを返すはずです。

24
Bálint

たとえば、dayフラグに応じてstatusアイテムの値を合計する場合、次のようになります。

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

アップデート1

すべてのステータスがtrueの場合の全体的なステータスについては、すべての方法を使用する必要があります。

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

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);
0
Nick Parsons