我有两个JSON对象。
colJson:
{"MetaData": [{"FieldName":"No.","ThousandsSeparator":true},{"FieldName":"Mvmt","DecimalPlaces":0,"ThousandsSeparator":true,"CurrencySymbol":true},{"FieldName":"% Mvmt","DecimalPlaces":1}]}
长度为3。
rowJson:
{"MetaData": [{"BackgroundColour":"#A9A9A9","Bold":true}]}
长度为1。
我需要的是最终将rowJson应用于colJson中的每个项目。
然而,当我尝试这个时:
var jsonObj = {};
jsonObj = $.extend(true, colJson, rowJson);
BackGroundColour和Bold仅应用于colJson中的第一项。
如何将BackgroundColour和Bold应用于所有colJson项?
感谢。
答案 0 :(得分:0)
我的建议是使用map和Object.assign函数:
window.onload = function() {
var colJson = {"MetaData": [{"FieldName":"No.","ThousandsSeparator":true},{"FieldName":"Mvmt","DecimalPlaces":0,"ThousandsSeparator":true,"CurrencySymbol":true},{"FieldName":"% Mvmt","DecimalPlaces":1}]};
var rowJson = {"MetaData": [{"BackgroundColour":"#A9A9A9","Bold":true}]};
var jsonObj = {"MetaData": colJson.MetaData.map(function(currVal, index, arr) {
return Object.assign(currVal, rowJson.MetaData[0]);
})};
document.getElementById('result').textContent = JSON.stringify(jsonObj, 4, 4);
}
<textarea id="result" style="width: 100%;height: 400px;"></textarea>