我正在尝试对从json响应中获取的值进行求和:
JS代码
var daySum = {};
$.each(json, function (i, v) {
date = Number(v.eDate.split('.')[0]);
eValue = Number(v.eValue);
daySum[date] += eValue;
console.log(date); //14 , 18 , 19, 19
console.log(eValue); //30.00 , 20.00 , 20.50, 14.30
});
console.log(daySum); //Object { 14=NaN, 18=NaN, 19=NaN}
JSON结构:
[
{
"eDate": "14.06.2013",
"eValue": "30.00"
},
{
"eDate": "18.06.2013",
"eValue": "20.00"
},
{
"eDate": "19.06.2013",
"eValue": "20.50"
},
{
"eDate": "19.06.2013",
"eValue": "14.30"
}
]
我在这里做错了什么?
答案 0 :(得分:2)
daySum[date] += eValue;
将eValue
添加到daySum[date]
的当前值。如果daySum
没有名称为date
的密钥,您将一起添加undefined
和一个数字:
> undefined + 2
NaN
您的错误来源。现在要修复它,你需要事先检查密钥是否存在:
if (date in daySum) {
daySum[date] += eValue;
} else {
daySum[date] = eValue;
}
另外,在声明变量时不要省略var
。你将使它们全局范围化,这不是你想要对每个变量做的事情。