对象在求和时返回NaN
Object returning NaN when sum values
我承认我在JavaScript和JSON方面很弱。我花了很多时间试图弄清楚为什么数字从我的对象返回NaN时,他们加在一起。考虑到这一点,下面是我的JSON,存储到一个变量:
var data = [
{
"acc_ext_id": null,
"cat_code": 10002,
"cat_ds": "REVENUE",
"category_id": null,
"chart_id": null,
"created_at": null,
"dept_id": null,
"feb": null,
"id": null,
"jan": 30,
"note": null,
"total_cost": null,
"updated_at": null,
"year_id": null
},
{
"acc_ext_id": "41260-02600",
"cat_code": 10002,
"cat_ds": "REVENUE",
"category_id": 2,
"chart_id": 2373,
"created_at": "2013-01-15 16:43:52.169213",
"dept_id": 86,
"feb": 45,
"id": 3,
"jan": 60,
"note": "Two",
"total_cost": 105,
"updated_at": "2013-01-15 16:43:52.169213",
"year_id": 1
}
]
然后尝试遍历对象并将值求和:
var jan;
for (var i=0;i<data.length;i++){
if(data[i].jan != null){
jan += parseFloat(data[i].jan);
console.log(jan);
}
}
在控制台中打印出的是NaN
。我试图解析这个数字,但没有得到任何结果。我的物品有问题吗?下面是一个jsFiddle来说明:http://jsfiddle.net/5E2pm/3/
var jan = 0; //this should solve it
for (var i=0;i<data.length;i++){
if(data[i].jan != null){
jan += parseFloat(data[i].jan);
console.log(jan);
}
}
试试这个应该可以解决:)
DON在下面的注释中引用的解释:
var 1月;这将声明变量为未定义,所以当您尝试用undefined添加值你会得到NaN,所以这里的答案是var jan = 0将工作- DON
2021
这是一个很好的使用减速器
const jan = data.reduce(function(total, current) {
return total + current.jan;
}, 0); // starting value
老回答我喜欢这个方法。当jan不存在时,它基本上在第一次迭代时将值设置为0。
jan = (jan || 0) + parseFloat(data[i].jan);
您需要先初始化jan
var jan = 0;
示例如下- link
相关文章:
- 如何防止Math.max()返回NaN
- 尝试求和时,在我的表的页脚中返回$NaN
- 为什么Math.pow(1,无穷大)返回NaN
- JavaScript:返回NaN(第2部分)
- 为什么这个代码返回NaN
- Protractor-分配给element.all.locator.count的变量返回NaN why
- javascript 在求和时返回 NaN
- 计算地理位置距离返回 NaN
- nan在C++中是什么意思?为什么pow(-4,-2.1)返回-nan
- 货币字段上的 parseInt 返回 NaN
- Javascript:解析csv中的字符串返回NaN(不是数字)
- JS脚本返回NaN
- 解析html td返回NaN
- Javascript函数返回NaN
- 在Javascript中计算日期会返回NaN-NaN-NaN
- 如果我对索引进行硬编码,它会按预期工作,为什么这个增量器会返回NAN
- new Date返回NaN或从服务器日期()开始的错误时间
- 变量递增返回 NaN
- 为什么我的基于约简的平均值函数返回 NaN
- Javascript-将字符串转换为Int会返回NaN错误