对象的合并的方法

const data1 = {
    a: { b: 1, c: 2 }
}
const data2 = {
    a: { d:3 },
    e: 123
}

将这2个对象合并,如何合并

阅读 1.3k
2 个回答

主要是根据你的要求-对象合并-大概写了一下方法

const data1 = {
  a: { b: 1, c: 2 },
};
const data2 = {
  a: { d: 3 },
  e: 123,
};

const isObj = (obj) =>
  Object.prototype.toString.call(obj) === "[object Object]";
const mergeObject = (obj1, obj2) => {
  const l1 = Object.keys(obj1);
  const l2 = Object.keys(obj2);
  let rto = {};
  l1.forEach((item) => {
    let val = obj1[item];
    let other = null;
    if (obj2[item]) {
      other = obj2[item];
      l2.splice(l2.indexOf(item), 1);
    }
    rto[item] =
      isObj(val) && isObj(other) ? mergeObject(val, other) : other || val;
  });

  l2.forEach((item) => {
    rto[item] = obj2[item];
  });
  return rto;
};

console.log(mergeObject(data1, data2));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题