更新嵌套对象属性

时间:2016-08-28 01:53:06

标签: javascript object

我正在尝试更新嵌套对象的值。

对象:

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
        }
      }
    }

enter image description here

1 个答案:

答案 0 :(得分:2)

当你这样做时:

let targetService = report[service][monthInterval];

因为该属性的值是原始数字(即,不是引用类型),targetService会创建值的克隆,而不是对它的引用。因此,递增targetService只会更改targetService,而不会更改原始对象。

只需用report[service][monthInterval] += cost;替换问题行就可以了。我不认为有更优雅的方式来做到这一点。

相关问题