Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

114
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda