глубокое объединение объектов с AngularJS
Обычно для поверхностного копирования объектов я бы использовалangular.extend()
Вот пример этого:
var object1 = {
"key": "abc123def456",
"message": {
"subject": "Has a Question",
"from": "[email protected]",
"to": "[email protected]"
}
};
var object2 = {
"key": "00700916391"
};
console.log(angular.extend({}, object1, object2));
Дали бы нам:
{
"key": "00700916391",
"message": {
"subject": "Has a Question",
"from": "[email protected]",
"to": "[email protected]"
}
}
Но что, если я хочу объединить объекты, чтобы родительские ключи не перезаписывались дочерними объектами:
var object1 = {
"key": "abc123def456",
"message": {
"subject": "Has a Question",
"from": "[email protected]",
"to": "[email protected]"
}
};
var object2 = {
"key": "00700916391", //Overwrite me
"message": { //Dont overwrite me!
"subject": "Hey what's up?", //Overwrite me
"something": "something new" //Add me
}
};
console.log(merge(object1, object2));
Дали бы нам:
{
"key": "00700916391",
"message": {
"subject": "Hey what's up?",
"from": "[email protected]",
"to": "[email protected]",
"something": "something new"
}
}
Есть ли угловая функция, которая уже делает глубокое слияние, о которой я не знаю?
Если нет, то есть ли родной способ сделать это в javascript рекурсивно для n уровней?