Есть два объекта со свойствами произвольной вложенности:
- объект-пациент, в котором часть свойств указаны, а часть нет;
- объект-донор, в котором тоже часть свойств указаны, а часть нет.
Нужно у объекта-пациента оставить как есть все свойства нижних уровней вложенности и добавить свойства, которых у него нет, если таковые имеются в объекте доноре.
// Пример
var donor = {
a: 1,
b: 2,
d: {aa: 1, bb: 2},
e: {aa: 1, bb: {aaa: 1, bbb: 2}}
f: {aa: 1, bb: {aaa: 1, bbb: 2}}
};
var patient = {
a: 7,
c: 8,
d: {bb: 7, cc: 8},
e: {aa: 7},
f: {bb: {aaa: 8}}
};
magic(); // Магия
/*
// После применения магии
patient = {
a: 7,
b: 2,
c: 8,
d: {aa: 1, bb: 7, cc: 8},
e: {aa: 7, bb: {aaa: 1, bbb: 2}},
f: {aa: 1, bb: {aaa: 8, bbb: 2}}
};
*/