循环通过json响应和总和值

时间:2013-06-06 18:35:57

标签: jquery sum

我正在尝试对从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"
  }
]

我在这里做错了什么?

1 个答案:

答案 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。你将使它们全局范围化,这不是你想要对每个变量做的事情。