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

129
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 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