Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

105
Vistas
Copiar por problema de referencia en NodeJS

Ok, pensé que lo había resuelto, pero supongo que estaba equivocado. Anteriormente publiqué el problema en el que debido a que javascript se copia un objeto como referencia del original, los cambios en el objeto original también se reflejarán en la copia. Entonces, según las recomendaciones de usar

 const originalData = {...docid[0][0].Record} // or const originalData = Object.assign({}, docid[0][0].Record)

revisé mi código para usarlos sin mucha suerte. Mi código ahora se ve así ...

 // Assign the Data from query // const originalData = {...docid[0][0].Record} const originalData = Object.assign({}, docid[0][0].Record) // Delete the History & DocId Object from Data Object delete originalData['History'] delete originalData['DocId']

y si imprimo en console.log (originalData), los datos son correctos. Ahora, en mi código, actualizo algunos datos y tengo una función que compara los datos para crear un archivo de diferencias, por eso necesito los datos originales.

Después de ejecutar este código a continuación, que toma mis nuevos datos y los mapea, elimina lo indefinido, etc.

 // Mailing Address let MailingAddrObj = update.mailingAddress Object.keys(MailingAddrObj).forEach(key => MailingAddrObj[key] === undefined && delete MailingAddrObj[key]) let MailingAddress = _.extend(docid[0][0].Record.mailingAddress, MailingAddrObj)

pero por alguna razón, el último comando también modificó mis datos originales, lo que pensé que era una copia profunda y eso no debería suceder. Entonces, si imprimo los datos originales después de este código, refleja los nuevos datos en el objeto MailingAddress.

Entonces, ¿qué me estoy perdiendo aquí o qué está mal?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Object.assign no funcionará para la clonación profunda. usar así

 const originalData = JSON.parse(JSON.stringify(docid[0][0].Record));
about 4 years ago · Juan Pablo Isaza Denunciar

0

Después de buscar un poco más, encontré una solución basada en lodash que me parece más limpia, especialmente porque ya uso lodash en mi código.

 const _ = require('lodash'); var obj = [{ x: 1 }, {y: 2}]; // Deep copy var deepCopy = _.cloneDeep(obj);
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda