提前感谢您的帮助。我想知道如何在javascript中计算符合特定规则的JSON响应中的响应总数。
这是我引用的JSON响应
[
{
"InvoiceNumber":"INV0319",
"InvoiceOrder":9,
"Balance":2.0000,
"CustomerID":"9b4b615f-2815-4f9c-a765-d7f8517cea6a",
"CustomerName":"Batman",
"InvoiceAmount":2.0000,
"InvoiceDate":"2015-09-17T00:00:00+00:00",
"DueDate":null,
"Status":2,
"Reference":null,
"Notes":null,
"IsOverdue":false
},
...
在响应中有一个名为“IsOverDue”的对象:false。
通常在此回复中会有许多结果混合了虚假和真实。
让我们说作为一个例子,在一个响应中有30个IsOverDue:true和20个IsOverDue:False
我如何能够以编程方式计算出响应中有30个(总共50个中)IsOverDue:True
由于
答案 0 :(得分:1)
使用reduce
计算过期值的数量,并返回一个整数。
function getOverdue(arr) {
return arr.reduce(function(p, c) {
return c.IsOverdue ? ++p : p;
}, 0);
}
getOverdue(arr); // 3
答案 1 :(得分:1)
你需要循环到每个obj并测试他们的属性'IsOverDue'为true然后添加到你的计数器过期... 尝试阅读并运行我的代码。
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script type="text/javascript">
//GLOBAL VARS
var overdueCount = 0;
var json = [{
"IsOverdue":true
},
{
"IsOverdue":false
},
{
"IsOverdue":false
}];
function countOverDue(){
overdueCount = 0;
for(var x = 0; x<json.length; x++){
if(json[x].IsOverdue){
overdueCount++;
}
}
}
countOverDue();
alert("There is "+overdueCount+" over due out of "+json.length);
</script>
</body>
</html>
答案 2 :(得分:0)
JSON响应就像我们这里的数组一样:
var jsonArray = [
{
name: 'James',
isTrue: true
},
{
name: 'Vicky',
isTrue: true
},{
name: 'Ryan',
isTrue: true
},
{
name: 'Tim',
isTrue: false
}
];
var areLate = [];
所以我们真的只是问'如何通过阵列并挑选出我想要的物品'。我喜欢这样做:
jsonArray.forEach( function (element) {
if(!element.isTrue){
areLate.push(element);
}
});
与array.forEach(callback(element))
一样。如果pushing
的属性jsonArray
返回element
,我isTrue
(添加到我在false
下方定义的新数组)。我们表明我们的工作人员通过console.log
正确地完成了工作。
console.log(areLate);
如果你想知道有多少是假的,我们可以console.log(areLate.length)
但是现在我们将所有信息放在一个新的数组中,以后我们可以使用(比如查找长度)。