Javascript 将数字添加到对象返回NaN
我有一个稍微复杂的循环:Javascript 将数字添加到对象返回NaN,javascript,angularjs,loops,for-loop,foreach,Javascript,Angularjs,Loops,For Loop,Foreach,我有一个稍微复杂的循环: angular.forEach($scope.days[i].trackers, function(key, value) { angular.forEach(key, function(el, name) { if(el.value != undefined) { counter = counter + parseInt(el.value); } }); arr[value] = pars
angular.forEach($scope.days[i].trackers, function(key, value) {
angular.forEach(key, function(el, name) {
if(el.value != undefined) {
counter = counter + parseInt(el.value);
}
});
arr[value] = parseInt(arr[value]) + counter;
counter = 0;
});
我认为重要的位是counter=counter+parseInt(el.value)代码>和arr[value]=parseInt(arr[value])+计数器代码>
value
是一个随机生成的键,但我需要存储所有el.value
的total
,所以我将它们全部相加并分配给随机生成的键
这就是它看起来的样子:
0:NaN
1:NaN
-KuBV9A1YKgp-WBNrZgx:NaN
-KuBV_8NjZ_cu1fB2j2z:NaN
-KuCiznaYshVFsrutc68:NaN
-KuCjTcy8CuV1zvJRyPm:NaN
-KuClWJqnRjnkNkXZ046:NaN
-KuClnc4I3FhMLLV8cf0:NaN
老实说,我一开始不知道那两个整数是什么
无论如何,如果我使用arr[value]=counter,它将返回NaN
而不是arr[value]=parseInt(arr[value])+计数器
它实际上返回数字,但问题是它只是互相覆盖,并不产生一个total
它产生最后一个el.value
我有什么明显的遗漏吗?我真的需要这些数字的总和。。有什么想法吗?谢谢
编辑:
$scope.days[i]。跟踪器
看起来是这样的:
trackers
-KuBV9A1YKgp-WBNrZgx
-KuFEv1AiaHwur--Al_K
note: "Pizza"
value: "400"
-KuFF-N41Oh6Y5zDTpc6
note: "Jam"
value: "200"
-KuBV_8NjZ_cu1fB2j2z
-KuFF3S3Jr9QSlUSvjqB
note: "Morning"
value: "150"
...etc
您正在累积(对所有值求和)并将它们添加到从不初始化的arr[value]
(因此有一个未定义的值作为初始值)。您应该首先检查它是否有值:
arr[value] = arr[value] || 0;
arr[value] = arr[value] + counter;
或者在一行中:
arr[value] = (arr[value] || 0) + counter;
您能否共享天[i]的数据结构?trackers
?@NafiulIslam添加在editYes中,这很有效!非常感谢。当它允许我的时候,我会确认为答案。