我有一个稍微复杂的循环:
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]) + counter;
value
是随机生成的密钥,但我需要存储所有total
的{{1}},所以我将它们全部添加并将它们分配给随机生成的密钥
这就是它的样子:
el.value
如果我是诚实的,我不知道这两个整数在开头是什么..
无论如何,它返回NaN,但是如果我使用0:NaN
1:NaN
-KuBV9A1YKgp-WBNrZgx:NaN
-KuBV_8NjZ_cu1fB2j2z:NaN
-KuCiznaYshVFsrutc68:NaN
-KuCjTcy8CuV1zvJRyPm:NaN
-KuClWJqnRjnkNkXZ046:NaN
-KuClnc4I3FhMLLV8cf0:NaN
而不是arr[value] = counter;
它实际返回数字,但问题是它只是相互覆盖并且它不会产生{{1}它产生最后的arr[value] = parseInt(arr[value]) + counter;
我有什么明显的遗失吗?我真的需要总数或数字的总和..有什么想法吗?谢谢!
编辑:
total
顺便说一下:
el.value
答案 0 :(得分:1)
您正在累积(求和所有值)并将它们添加到您从未初始化的arr[value]
(因此具有undefined
值作为初始值)。您应该先检查它是否具有值:
arr[value] = arr[value] || 0;
arr[value] = arr[value] + counter;
或一行:
arr[value] = (arr[value] || 0) + counter;