Quiero fusionar 2 objetos con matrices anidadas (o subarreglos) tomando la propiedad id como clave que está presente en todas las matrices. Intenté usar _.merge() y _.mergeWith() pero ambos están reemplazando el objeto anterior o extendiendo en lugar de fusionar las matrices o simplemente funcionan en un nivel superficial y no fusionan matrices profundamente anidadas. Además, la fusión no significa que quiero fusionar múltiples subarreglos en una sola matriz, sino que significa fusionar 2 objetos con sus respectivas matrices anidadas.
Ejemplo:
var obj1 = {arr1: [subarr1: [subarr2:[a, b]...]...]...} var obj2 = {arr1: [subarr1: [subarr2:[a, c]...]...]...} var obj3 = merge(obj1, obj2) // obj3 should be {arr1: [subarr1: [subarr2:[a, b, c]...]...]...}Le sugiero que use deepmerge (npm install deepmerge) o deepmerge-ts ( npm install deepmerge-ts ).
deepmerge también viene con tipeos para TypeScript y es más estable (ya que es más antiguo), pero deepmerge-ts también está disponible para Deno y es más rápido por diseño, aunque está escrito en TypeScript como su nombre lo indica.
Una vez importado puedes hacer
deepmerge({ a: 1, b: 2, c: 3 }, { a: 2, d: 3 });Llegar
{ a: 2, b: 2, c: 3, d: 3 }Esto funciona muy bien con objetos y matrices complejos . Esta es una verdadera solución integral.