mergeDeep()
Подобно merge(), но при обнаружении двух совместимых коллекций с одинаковым ключом, они также объединяются, рекурсивно проходя по вложенным данным. Две коллекции считаются совместимыми (и, следовательно, будут объединены), если обе относятся к одной из трёх категорий: именованные (например, Mapы, Recordы и объекты), индексированные (например, Listы и массивы) или подобные множествам (например, Setы). Если они относятся к разным категориям, mergeDeep заменит существующую коллекцию коллекцией, которую нужно объединить. Это поведение можно настроить, используя mergeDeepWith().
mergeDeep<C>(collection: C,...collections: Array<Iterable<unknown> | Iterable<[unknown, unknown]> | {[key: string]: unknown}>): C
Обсуждение
Примечание: Индексированные и подобные множествам коллекции объединяются с использованием concat()/union() и поэтому не рекурсируют.
Функциональная альтернатива collection.mergeDeep(), которая также будет работать с обычными объектами и массивами.
const { mergeDeep } = require('immutable')
const original = { x: { y: 123 }}
mergeDeep(original, { x: { z: 456 }}) // { x: { y: 123, z: 456 }}
console.log(original) // { x: { y: 123 }}run it
© 2014–present, Lee Byron and other contributors
Licensed under the 3-clause BSD License.
https://immutable-js.com/docs/v4.2.1/mergeDeep()/