0

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

我在这里做错了什么?

4

1 回答 1

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另外,声明变量时不要省略。您将使它们具有全局范围,这不是您想要对每个变量执行的操作。

于 2013-06-06T18:40:43.420 回答