我正在尝试制作一个对象,其中的关键是年数,价值是金额

yearlyCost = {"2016":0,"2017":0,"2018":0,"2019":0} //year(key):amount(value)


我在视图中有一个输入字段,可让我输入新的金额,每次添加不同的addLocalCostContributor时,它都会检查条件是否匹配,并将金额添加到年份中。

function addLocalCostContributor(localCost, year) {
        localCost.contributors.push({});

          for(var i=0; i < localCost.contributors.length;i++ ) {
            if(angular.isDefined(localCost.contributors[i].contributor) && localCost.contributors[i].contributor.name ==='Agriterra') {
              vm.argiterraYearlyLocalCost[year] = localCost.contributors[i].amount;
            }
          }
    }


问题是,无论何时添加新金额并满足条件,我都希望年份将其添加。因此,如果“ 2016”年获得新的金额,则应将其添加到键“ 2016”中,而不要替换它。

如果有更好的方法来保存年度金额并进行更新,我愿意接受。

最佳答案

使用+=

vm.argiterraYearlyLocalCost[year] += localCost.contributors[i].amount;


实际上,只是要确保密钥存在于特定年份:

if(vm.argiterraYearlyLocalCost.hasOwnProperty(year)) {
    vm.argiterraYearlyLocalCost[year] += localCost.contributors[i].amount;
}
else {
    vm.argiterraYearlyLocalCost[year] = localCost.contributors[i].amount;
}

09-28 08:23