。$扩展不同长度的JSON对象

时间:2016-03-29 15:25:43

标签: jquery json

我有两个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项?

感谢。

1 个答案:

答案 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>