Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

133
Views
¿Cómo puedo obtener una nueva copia de una matriz de objetos cuyos elementos anidados pueden crecer indefinidamente?

Estoy trabajando con una serie de objetos que originalmente se ven así

 const data = [ { data: 1, children: [], }, { data: 2, children: [], }, ];

Eventualmente, estos objetos pueden crecer indefinidamente llenando la propiedad de los niños con objetos que comparten la forma de los objetos originales. Por ejemplo

 const data = [ { data: 1, children: [ { data: 3, children: [], }, { data: 4, children: [], } ], }, { data: 2, children: [], }, ];

Necesito eso cuando obtengo nuevos datos como este

 [ { data: 10, children: [] }, { data: 12, children: [] }, ]

y eso debe colocarse, por ejemplo, en la propiedad child del objeto con la propiedad data con valor 4. ¿Cómo puedo reemplazar toda la matriz con los nuevos valores? Como mencioné antes, los objetos anidados pueden crecer llenando la propiedad de los niños indefinidamente.

 const data = [ { data: 1, children: [ { data: 3, children: [], }, { data: 4, children: [ { data: 10, children: [] }, { data: 12, children: [] }, ], } ], }, { data: 2, children: [], }, ];

Actualización 0 : necesito una nueva copia de la matriz con sus objetos actualizados porque trabajo en angular y para que se actualice un componente de árbol de nodos, necesito una nueva copia de valores

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Puede tener recursividad para encontrar coincidencias de data y actualizar children en consecuencia

 const newData = [ { data: 10, children: [] }, { data: 12, children: [] }, ] const data = [ { data: 1, children: [ { data: 3, children: [], }, { data: 4, children: [], } ], }, { data: 2, children: [], }, ]; function updateData(currentData, newData, dataValue) { if(currentData && Array.isArray(currentData) && currentData.length > 0) { for(let item of currentData) { //found item.data === 4 if(item.data === dataValue) { //update children with your new data item.children = newData; break; } updateData(item.children, newData, dataValue) } } } //clone your data here const clonedData = JSON.parse(JSON.stringify(data)) updateData(clonedData, newData, 4) console.log({clonedData}) console.log("===========") console.log({data})
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Report

0

Puede analizarlo usando JSON (aunque no detectará funciones)

 const data = [ { data: 10, children: [] }, { data: 12, children: [] }, ]; const newObj = JSON.parse(JSON.stringify(data)); newObj[0].data = 15; console.log(newObj[0].data); // 15 console.log(data[0].data); // 10

O puedes usar lodash cloneDeep

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!