Volver a la página principal
viernes 25 octubre 2024
5

Cómo mergear dos objetos con profundidad con Lodash

Usando _.merge en Lodash

Lodash proporciona el método _.merge para realizar un merge profundo entre dos objetos. Este método combina las propiedades de los objetos origen con el objeto destino, sobreescribiendo los valores del destino cuando hay conflicto, pero solo a nivel de las propiedades individuales o más profundas.

const _ = require('lodash');

const objeto1 = {
  nombre: 'Juan',
  detalles: {
    edad: 30,
    direccion: {
      ciudad: 'Madrid'
    }
  }
};

const objeto2 = {
  detalles: {
    direccion: {
      ciudad: 'Barcelona',
      pais: 'España'
    }
  }
};

const resultado = _.merge(objeto1, objeto2);

console.log(resultado);

Resultado:

{
  nombre: 'Juan',
  detalles: {
    edad: 30,
    direccion: {
      ciudad: 'Barcelona',
      pais: 'España'
    }
  }
}

En este ejemplo, Lodash fusiona los objetos de forma profunda. La propiedad direccion.ciudad se sobrescribe con el valor del segundo objeto, mientras que la nueva propiedad direccion.pais se agrega.

Ejemplos adicionales

1. Combinación de arreglos y objetos anidados:

const objA = { data: [1, 2], info: { active: true } };
const objB = { data: [3], info: { status: 'complete' } };

const resultado = _.merge(objA, objB);

console.log(resultado);

Resultado:

{
  data: [3], // Los arreglos no se combinan, se sobrescriben
  info: {
    active: true,
    status: 'complete'
  }
}

2. Múltiples niveles de profundidad:

const objA = { a: { b: { c: 1 } } };
const objB = { a: { b: { d: 2 } } };

const resultado = _.merge(objA, objB);

console.log(resultado);

Resultado:

{
  a: {
    b: {
      c: 1,
      d: 2
    }
  }
}

Referencia

Puedes encontrar más detalles en la documentación oficial de Lodash.

Etiquetas:
javascript
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer