Javascript 如何从json获取精确的值计数

Javascript 如何从json获取精确的值计数,javascript,Javascript,我有一个类似这样的json数据。我想要json中“pass”值的精确计数 [{ "Status1" : "pass", "Status2" : "Fail", "Status3" : "Ready" },{ "Status1" : "Fail", "Status2" : "pass", "Status3" : "Ready" },{ "Status1" : "pass", "Status2" : "Fail", "Statu

我有一个类似这样的json数据。我想要json中“pass”值的精确计数

[{
    "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++;

您可以根据对象是否包含任何值为“pass”的属性来过滤对象。大概是这样的:

const数据=[{
“状态1”:“通过”,
“状态2”:“失败”,
“状态3”:“就绪”
},{
“状态1”:“失败”,
“状态2”:“通过”,
“状态3”:“就绪”
},{
“状态1”:“通过”,
“状态2”:“失败”,
“状态3”:“通过”
},{
“状态1”:“通过”,
“状态2”:“失败”,
“状态3”:“就绪”
}]
const count=data.filter(obj=>Object.keys(obj).some(key=>{
返回obj[键]=“通过”
})).长度
console.log(count)
您非常接近:

var count = 0;
for(var obj of json)
  count += Object.values(obj).filter(k => k === "pass").length;
您需要迭代json数组中的所有对象,然后过滤它们的值以只包含“pass”,对它们进行计数(via.length)并求和(+=)

如果您不想获得总的“通过”计数,但要获得包含通过值的对象数就更容易了:

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++;
const数据=[{
“状态1”:“通过”,
“状态2”:“失败”,
“状态3”:“就绪”
},{
“状态1”:“失败”,
“状态2”:“通过”,
“状态3”:“就绪”
},{
“状态1”:“通过”,
“状态2”:“失败”,
“状态3”:“通过”
},{
“状态1”:“通过”,
“状态2”:“失败”,
“状态3”:“就绪”
}]

console.log(Object.key(data.length))此代码正在入侵IE。是否有任何解决方法that@david如果你想获得支持,你应该要求ES5回答。编辑…谢谢。事实上,我并不知道ES5的概念