我有一个来自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数组循环注册对象?
答案 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及更低版本。