0

我有一个来自 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) 中的值求和。我面临的挑战是键是唯一的,并且大多数演示如何执行此类操作的帖子都显示了示例,其中它只是一个值数组或键是一致的(即 - 每个键都是“值”)。

我是否应该尝试使用 Series 数组来循环访问 Sign Up 对象?

4

2 回答 2

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循环遍历该对象具有的所有键,并将值相加。

于 2013-06-10T01:56:26.500 回答
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 及更低版本的填充程序。

于 2013-06-10T02:00:03.233 回答