JavaScript:动态添加新值以更新 JSON/对象

sag*_*rya 2 javascript json

我已经动态创建了对象(预定义),并将所有年份(2 年,2015 年和 2014 年)的所有月份(实际上 12 个月,我只展示了 3 个月)的值设置为 0。所以我的数据网格看起来所有月份都是 0 值。看下面的代码

 var arrayObj = [
               {"year" : 2015, "month" : "JAN", "value" : 0},
               {"year" : 2015, "month" : "FEB", "value" : 0},
               {"year" : 2015, "month" : "MAR", "value" : 0},
               {"year" : 2014, "month" : "JAN", "value" : 0},
               {"year" : 2014, "month" : "FEB", "value" : 0},
               {"year" : 2014, "month" : "MAR", "value" : 0}
             ];
Run Code Online (Sandbox Code Playgroud)

定期,我会在表单提交后的某个时间以对象格式继续获取单月的值。

   eq. {"year" : 2015, "month" : "FEB", "value" : 2.33}
Run Code Online (Sandbox Code Playgroud)

所以我的原始对象也应该相应地改变,使用 javascript 代码。像下面..

  var arrayObj = [
               {"year" : 2015, "month" : "JAN", "value" : 0},
               {"year" : 2015, "month" : "FEB", "value" : 2.33},
               {"year" : 2015, "month" : "MAR", "value" : 0},
               {"year" : 2014, "month" : "JAN", "value" : 0},
               {"year" : 2014, "month" : "FEB", "value" : 0},
               {"year" : 2014, "month" : "MAR", "value" : 0}
             ];
Run Code Online (Sandbox Code Playgroud)

Ber*_*aul 6

我认为在这种情况下 map 功能将是理想的。请看下面的代码段:

var src = [
           {"year" : 2015, "month" : "JAN", "value" : 0},
           {"year" : 2015, "month" : "FEB", "value" : 0},
           {"year" : 2015, "month" : "MAR", "value" : 0},
           {"year" : 2014, "month" : "JAN", "value" : 0},
           {"year" : 2014, "month" : "FEB", "value" : 0},
           {"year" : 2014, "month" : "MAR", "value" : 0}
         ];

var newRecord = {
"year": 2015,
"month": "FEB",
"value": 2.33
};

function updateJSON(src, newRecord) {
return src.map(function(item) {
  return (item.year === newRecord.year && item.month === newRecord.month) ? newRecord : item;
});
}
src = updateJSON(src, newRecord);
console.log(src);
Run Code Online (Sandbox Code Playgroud)