Для этого проще всего использовать пакет deep merge
.
Вы можете использовать deepmerge или lodash
слияние
Если вы точно знаете, какие ключи вы хотите обновить, вы можете просто использовать Object.assign для каждого отдельного уровня и клавишу . Object.assign выполняет поверхностное копирование / слияние.
Для первого уровня вы можете использовать Object.assign
let mergedObject = Object.assign({}, globalObj, updatedObj)
. Это позволит правильно объединить ключи верхнего уровня, но атрибуты будут неправильными. Так что для этого вам нужно go на один уровень вниз.
merged.attributes = globalObj.attributes.map( (item, index) =>
Object.assign({}, item, updatedObj.attributes[i])
)
Это будет работать только , если массивы имеют одинаковый размер. Это чрезвычайно важно.
Не совсем понятно, что означает объединение двух массивов. Есть много вопросов, которые делают объединение массивов нетривиальным:
- как добавить новый элемент
- как определить совпадающие элементы, чтобы вы знали, какой элемент нужно обновить
- вы принимаете это решение на основе индекса (как я) или вы используете другую стратегию
Это в значительной степени зависит от того, как вы однозначно идентифицируете элемент массива, и это в само по себе нетривиально.