我已经动态创建了对象(预定义),并将所有年份(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)
我认为在这种情况下 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)