Estoy trabajando en un proyecto JS donde necesito anular algunos valores en mi objeto que contiene objetos anidados.
Normalmente usaría lo siguiente:
const merged = { ...application, ...customer } Para que cualquier dato dentro del customer pueda anular la application .
Sin embargo, en mi ejemplo, customer anula todo el objeto anidado del applicant y solo necesito anular el nombre dentro de ese objeto.
He creado un violín JS que se puede encontrar aquí , ¿qué me estoy perdiendo?
const customer = { applicant: { first_name: 'john' } } const application = { applicant: { first_name: 'edward', age: 50 }, income: { salary: 500 } } const merged = { ...application, ...customer } console.log(merged) En merged , espero que el first_name sea "John", mientras que todo lo demás permanece intacto.
Las propiedades que desea reemplazar mediante la distribución deben estar en el nivel superior del objeto. En este caso, toma las propiedades de nivel superior de la aplicación, que son solicitante e ingresos, y luego reemplaza la propiedad del solicitante con la del cliente. Si desea que se reemplace el nombre, necesitaría algo como
const merged = { ...application, applicant: {...application.applicant, ...customer.applicant} };Puedes hacer esto fácilmente con lodash
const merged = _.merge(customer, application)