2个JSON对象合并问题~

even0220 2019-01-25 11:46:49
求教怎么将columnDefs1 和columnDefs2合并变成columnDefs3

谢谢~
    var columnDefs1 = [
{ headerName: "AirBookingItemId", field: "AirBookingItemId", hide: true },
{ headerName: "AirBookingHeadId", field: "AirBookingHeadId", hide: true },
{ headerName: "S.Marks", field: "ShippingMarks", width: 120 },
{ headerName: "Item SEQ", field: "ItemSequence", width: 130 }
];

var columnDefs2 = [
{
field: "ShippingMarks",
cellEditor: 'agLargeTextCellEditor',
editable: true,
width: 120,
cellEditorParams: {
maxLength: 2000,
rows: 15,
cols: 61
}
}
];

var columnDefs3 = [
{ headerName: "AirBookingItemId", field: "AirBookingItemId", hide: true },
{ headerName: "AirBookingHeadId", field: "AirBookingHeadId", hide: true },
{
headerName: "S.Marks",
field: "ShippingMarks",
width: 120,
cellEditor: 'agLargeTextCellEditor',
editable: true,
cellEditorParams: {
maxLength: 2000,
rows: 15,
cols: 61
}
},
{ headerName: "Item SEQ", field: "ItemSequence", width: 130 }
];

...全文
423 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hello World, 2019-01-26
  • 打赏
  • 举报
回复
加一个深拷贝选项:
var cc=$.extend(true,columnDefs1,columnDefs2);

追热 2019-01-25
  • 打赏
  • 举报
回复
引用 4 楼 Hello World, 的回复:
headerName没有了。
Hello World, 2019-01-25
  • 打赏
  • 举报
回复
Hello World, 2019-01-25
  • 打赏
  • 举报
回复
用jQuery的extend方法就简单:
var options = $.extend({}, defaults, options);

参考
追热 2019-01-25
  • 打赏
  • 举报
回复
var columnDefs1 = [
    { headerName: "AirBookingItemId", field: "AirBookingItemId", hide: true },
    { headerName: "AirBookingHeadId", field: "AirBookingHeadId", hide: true },
    { headerName: "S.Marks", field: "ShippingMarks", width: 120 },
    { headerName: "Item SEQ", field: "ItemSequence", width: 130 }
];
var columnDefs2 = [
    {
        field: "ShippingMarks",
        cellEditor: "agLargeTextCellEditor",
        editable: true,
        width: 120,
        cellEditorParams: {
            maxLength: 2000,
            rows: 15,
            cols: 61
        }
    }
]
var columnDefs3 =[];
function ConnectJson(arr1, arr2,arr3) {
    for(var i in arr1){
        arr3.push({});
        for(var j in arr2){
            if(arr1[i].hasOwnProperty('field')&&arr2[j].hasOwnProperty('field')){
                if(arr1[i].field===arr2[j].field){
                  Object.assign(arr3[i],arr1[i],arr2[j]);
                }else {
                    Object.assign(arr3[i],arr1[i]);
                }
            } 
        }
    }
}
ConnectJson(columnDefs1,columnDefs2,columnDefs3);
合并对象用Object.assign方法。
風灬雲 2019-01-25
  • 打赏
  • 举报
回复
假设 columnDefs1和 columnDefs2数据有出入时以 columnDefs1为主,并且每个元素以field作为唯一标记

columnDefs2.forEach(e=>{
let isExist=false;//表示columnDefs2中的这个元素在columnDefs1中不存在
for(let i=0;i<columnDefs1.length;i++){
   if(e.field===columnDefs1[i].field){//如果相同表示存在
      isExist=true;
      for(let key in e){
         columnDefs1[i][key]=columnDefs1[i][key]?columnDefs1[i][key]:e[key]
      };
      break;
   }
}
if(!isExist){//如果不存在,这把元素push到columnDefs1
columnDefs1.push(e)
}
})
console.log(columnDefs1)

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧