我正在尝试更新嵌套对象的值。
对象:
var data = {
"key 1": {
"jan-16": 0,
"feb-16": 0,
"mar-16": 0
},
"key 2": {
"jan-16": 0,
"feb-16": 0,
"mar-16": 0
}
}
data["key 1"]["jan-16"] += 250;
问题在于我所做的只是添加0 + 250但实际上没有更新对象值
这就是我尝试使用其他代码的方法:
if(firstBillDate.isBefore(dateEnd)) {
while(intervalIterator > 0) {
let targetService = report[service][monthInterval];
if( !_.isNull(targetService) && !_.isUndefined(targetService) ) {
targetService += cost; // Nothing is happening here
monthInterval = moment(monthInterval).add(pmtInterval,'month').format('MMMM-YYYY');
intervalIterator -= pmtInterval; //12-4
}
}
}
答案 0 :(得分:2)
当你这样做时:
let targetService = report[service][monthInterval];
因为该属性的值是原始数字(即,不是引用类型),targetService
会创建值的克隆,而不是对它的引用。因此,递增targetService
只会更改targetService
,而不会更改原始对象。
只需用report[service][monthInterval] += cost;
替换问题行就可以了。我不认为有更优雅的方式来做到这一点。