JS 按照条件合并添加对象

//原数据
var aa = {
  'ADU': {
    'ADU': {
      "Syc": {
          'id': 'TS112',
          'value': "1"
       }
    }
  }
}

//新加数据
var bb = {
  'ADU': { //'BYT'
    'STH': {
      "Txc": {
          'id': 'TS112',
          'value': "1"
       }
    }
  }
}

两个对象 第一个对象是原数据 第二个是新增数据 要对这两个对象合并
条件1:对象bb的第一层key值ADU跟对象aa的第一层key值一样,则把对象bb的key值STH添加到对象aa里面。如:

  'ADU': {
    'ADU': {
      "Syc": {
          'id': 'TS112',
          'value': "1"
       }
    },
    'STH': {
        "Txc": {
            'id': 'TS112',
            'value': "1"
          }
      }
   }

条件1:对象bb的第一层key值ADU跟对象aa的第一层key值不一样,则把对象bb的key值STH添加到对象aa里面。如:

 'ADU': {
    'ADU': {
      "Syc": {
          'id': 'TS112',
          'value': "1"
       }
    }
  },
'BYT': { 
    'STH': {
      "Txc": {
          'id': 'TS112',
          'value': "1"
       }
    }
  }
   

对象三层都是这样的规则处理。

阅读 2.1k
2 个回答
//原数据
var aa = {
  'ADU': {
    'ADU': {
      "Syc": {
          'id': 'TS112',
          'value': "1"
       }
    }
  }
}

//新加数据
var bb = {
  'ADU': { //'BYT'
    'STH': {
      "Txc": {
          'id': 'TS112',
          'value': "1"
       }
    }
  }
}
{
const isType = (obj, type)=>Object.prototype.toString.call(obj) === `[object ${type}]`;
const extend = (obj1,obj2)=>{
   Object.entries(obj2).forEach(([key, val])=>isType(val, 'Object') ? extend((obj1[key]||={}), val) : (obj1[key]=val))
 }
extend(aa, bb);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题