Shallow merge
и deep merge
— два метода объединения объектов. Существует потенциальная опасность выполнения поверхностного слияния вместо глубокого слияния, поэтому вам нужно использовать его с умом.
Метод Object.assign()
позволяет копировать все перечисляемые собственные свойства из одного или нескольких исходных объектов в целевой объект и возвращать целевой объект. Ниже приведен пример метода Object.assign()
.
В приведенном выше примере Object.assign
изменил наш объект myDog
. Чтобы предотвратить мутацию, мы можем добавить скобки в наш метод, который копирует значения в новый объект, или использовать spread operator (...)
Оба метода применяют объекты по порядку, что означает, что первый объект обновляется предыдущим объектом.
Spread operator
и Object.assign
принадлежит Shallow merge
. Shallow merge
не следует использовать для объектов, содержащих другие объекты, поскольку вложенные объекты перезаписываются, а не объединяются.
Чтобы предотвратить перезапись вложенных объектов, мы можем использовать deep merge
, представленный в примере ниже:
Для большего количества уровней вложенности объектов будет полезна библиотека deepmerge или lodash.
Этот метод безопасен для слияния вложенных объектов или объектов, содержащих массивы.