2017-11-05 7 views
1

私はこのようなjsonデータを持っています。私は私のjsonで "合格"値の正確なカウントが欲しい。jsonからの正確な値の取得方法

[{ 
    "Status1" : "pass", 
    "Status2" : "Fail", 
    "Status3" : "Ready" 
},{ 
    "Status1" : "Fail", 
    "Status2" : "pass", 
    "Status3" : "Ready" 
},{ 
    "Status1" : "pass", 
    "Status2" : "Fail", 
    "Status3" : "pass" 
},{ 
    "Status1" : "pass", 
    "Status2" : "Fail", 
    "Status3" : "Ready" 
}] 

ここで私は失敗に挑戦しています。

var count = 0; 
for(var pass in json) 
    if(json.hasOwnProperty(pass)) 
     count++; 

答えて

1

あなたは非常に近いです:

var count = 0; 
for(var obj of json) 
    count += Object.values(obj).filter(k => k === "pass").length; 

あなたはその後、(、唯一の「パス」を含む(.LENGTH経由で)それらをカウントし、それらを合計し、その値をフィルタリングし、JSON配列内のすべてのオブジェクトを反復処理する必要があります+ =)。

あなたは合計を取得したいいけない場合は、「合格」数えるが、その一層容易なパス値を含むオブジェクトの数:

var count = 0; 
for(var obj of json) 
    if(Object.values(obj).includes("pass")) count++; 

ES5で全体のこと:

var count = 0; 
for(var key in json) 
    if(Object.keys(json[key]).filter(function(sub){return json[key][sub] === "pass";}).length) count++; 
+0

ありがとう@Jonas ありがとう。これは動作しています:) – David

+0

@ダビッドあなたはようこそ;) –

+0

このコードはIEで壊れています。あなたがサポートしたい場合は、 – David

2

オブジェクトに値「通過」のプロパティが含まれているかどうかによってフィルタリングできます。このような何か:

const data = [{ 
 
    "Status1" : "pass", 
 
    "Status2" : "Fail", 
 
    "Status3" : "Ready" 
 
},{ 
 
    "Status1" : "Fail", 
 
    "Status2" : "pass", 
 
    "Status3" : "Ready" 
 
},{ 
 
    "Status1" : "pass", 
 
    "Status2" : "Fail", 
 
    "Status3" : "pass" 
 
},{ 
 
    "Status1" : "pass", 
 
    "Status2" : "Fail", 
 
    "Status3" : "Ready" 
 
}] 
 

 
const count = data.filter(obj => Object.keys(obj).some(key => { 
 
    return obj[key] === 'pass' 
 
})).length 
 

 
console.log(count)

有用な方法:

+0

ありがとうございます。これは動作しています:) – David

0

const data = [{ 
 
    "Status1" : "pass", 
 
    "Status2" : "Fail", 
 
    "Status3" : "Ready" 
 
},{ 
 
    "Status1" : "Fail", 
 
    "Status2" : "pass", 
 
    "Status3" : "Ready" 
 
},{ 
 
    "Status1" : "pass", 
 
    "Status2" : "Fail", 
 
    "Status3" : "pass" 
 
},{ 
 
    "Status1" : "pass", 
 
    "Status2" : "Fail", 
 
    "Status3" : "Ready" 
 
}] 
 

 
console.log(Object.keys(data).length);

関連する問題