【问题标题】:Determine number of responses in JSON response [closed]确定 JSON 响应中的响应数量 [关闭]
【发布时间】:2016-06-09 01:37:57
【问题描述】:

提前感谢您的帮助。我想知道如何在 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

谢谢

【问题讨论】:

  • 向我们展示您的尝试,我们会为您提供帮助。
  • 使用多种数组循环方法中的任何一种并计数

标签: javascript html json api rest


【解决方案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】:

    使用reduce统计过期值的个数,并返回一个整数。

    function getOverdue(arr) {
      return arr.reduce(function(p, c) {
        return c.IsOverdue ? ++p : p;
      }, 0);
    }
    
    getOverdue(arr); // 3
    

    DEMO

    【讨论】:

      【解决方案3】:

      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))。如果element 的属性isTrue 返回false,我是pushing(添加到我在jsonArray 正下方定义的新数组)。我们通过console.log 证明我们的工人正确地完成了工作。

      console.log(areLate);
      

      如果您想知道有多少是假的,我们可以console.log(areLate.length),但现在我们将所有信息都保存在一个新数组中,供以后使用(例如查找长度)。

      【讨论】:

      • 只有代码而没有描述或解释的答案不是很有价值。这段代码甚至没有真正回答问题
      • 我深表歉意!我很兴奋,因为我用一个很小的功能完成了它。我会提供更多细节!
      猜你喜欢
      • 2014-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多