agrublev
10/14/2019 - 4:54 PM

mergeObjectsNicely

const isObject = obj => obj === Object(obj);

const merge = (obj1, obj2) => {
  Object.keys(obj1).forEach(key => {
    if (Array.isArray(obj1[key])) {
      if (obj2[key]) obj1[key] = [...obj1[key], ...obj2[key]];
    } else if (isObject(obj1[key])) {
      if (obj2[key]) obj1[key] = { ...obj1[key], ...obj2[key] };
    } else {
      if (obj2[key] !== undefined) {
        obj1[key] = obj2[key];
      }
    }
  });
  return { ...obj2, ...obj1 };
};
merge(
  { thresh: [1, 6], ttee: { one: "A", two: "B" }, testb: 0 },
  { thresh: [51, 55], ttee: { tone: "A", two: "Z" }, testb: true, zzz: true }
); //?