角度的foreach结果加起来

时间:2018-02-13 10:56:51

标签: javascript angularjs foreach

我遇到以下代码的问题:

function getTotalChildAttr2(parent,child) {
           var res = 0;
           for (var i = 0, iMax = 2; i < iMax; i++) {
              angular.forEach(vm.filteredRoutersSummaries[i], function (summary) {
                res += summary[parent][child];
                });
           }
           console.log(vm.filteredRoutersSummaries);
           return res;
       }

基本上这个问题是,由于[i],res与每个vm.filteredRoutersSummaries相加,然后返回res,我想要的是为每个vm.filteredRoutersSummaries返回res。 例如(vm.filteredRoutersSummaries是一个数组,但让我们想象它只是一个整数)如果我有:

vm.filteredRoutersSummaries[0] = 10
vm.filteredRoutersSummaries[1] = 15

目前,我会得到res = 25,我想要的是: res = 10,vm.filteredRoutersSummaries [0],res = 15,vm.filteredRoutersSummaries [1]。 (因为后来我做了例子:

vm.routers[i].value = getTotalChildAttr2('real', 'value');

我可以通过在两个函数中完成它来实现(不使用for条件,只需在第1个函数的angular.foreach中的vm.filteredRoutersSummaries中将i替换为0,在第2个函数中将1替换为1)。 我真的不知道这是否非常清楚,如果您有任何疑问请不要问我! TY!

1 个答案:

答案 0 :(得分:1)

我希望我理解你的问题,但是因为它不是很清楚。

怎么样:

function getTotalChildAttr2(parent, child, index) {
    var res = 0;

    angular.forEach(vm.filteredRoutersSummaries[index], function (summary) {
            res += summary[parent][child];
    });

    console.log(vm.filteredRoutersSummaries);

    return res;
}

然后:

vm.routers[i].value = getTotalChildAttr2('real', 'value', i);

你可以吗?