JSON数组响应中的Sum值

时间:2013-06-10 01:51:27

标签: javascript arrays json object addition

我有一个来自API响应的JSON字符串,如下所示:

{ "legend_size": 1,
  "data": {
    "series": [ "2013-05-01", "2013-05-02" ],
    "values": {
        "Sign Up": {
            "2013-05-05": 10,
            "2013-05-04": 10
         }
     }
  }
}

我想在“注册”对象(10 + 10)中对值进行求和。我遇到的挑战是密钥是唯一的,并且大多数帖子演示了如何做这样的事情显示示例,其中它只是一个值数组或键是一致的(即 - 每个键都是“值”)。 / p>

我是否应该尝试使用Series数组循环注册对象?

2 个答案:

答案 0 :(得分:4)

假设您已经将数据解析为对象,您可以像这样使用for循环:

var json = {
    "legend_size": 1,
    "data": {
        "series": [ "2013-05-01", "2013-05-02" ],
        "values": {
            "Sign Up": {
                "2013-05-05": 10,
                "2013-05-04": 10
            }
        }
    }
};
var sum = 0;
for (x in json.data.values['Sign Up']) {
    sum += json.data.values['Sign Up'][x];
}

基本上,我们浏览json数据以获取我们想要的实际数据......这是'注册'对象。然后我们使用for/in循环遍历该对象拥有的所有键,并将值相加。

答案 1 :(得分:0)

解析之后,可以使用Array.prototype.reduce来获得总和。

var vals = object.data.values["Sign Up"];

var result = Object.keys(vals)
                   .reduce(function(sum, key) {
                       return sum + vals[key]
                   }, 0);

.reduce().keys()方法需要填充IE8及更低版本。

相关问题