向对象添加数字返回NaN

时间:2017-09-17 17:26:59

标签: 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] = 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

1 个答案:

答案 0 :(得分:1)

您正在累积(求和所有值)并将它们添加到您从未初始化的arr[value](因此具有undefined值作为初始值)。您应该先检查它是否具有值:

arr[value] = arr[value] || 0;
arr[value] = arr[value] + counter;

或一行:

arr[value] = (arr[value] || 0) + counter;