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

89
Vistas
JavaScript: actualice una matriz de objetos profundamente anidada con la ruta de destino

El nivel de anidamiento siempre se desconoce y los elementos secundarios pueden ser indefinidos o una matriz con al menos un elemento. Cada clave es siempre única. Este sería un ejemplo:

 const arr = [{ key: '001', children: [{ key: 'abc', children: [{ key: 'ee', children: [{ key: 'goc', }, { key: 'zzv', children: [{ key: '241', }], }], }], }, { key: '125', children: undefined, }], }, { key: '003', children: [{ key: 'ahge', }, { key: '21521', }], }];

Me gustaría escribir una función que reciba una clave para encontrar el elemento y luego actualice su campo secundario con la matriz secundaria dada y luego devuelva la matriz completa.

 // Function that returns arr with updated the target element - how can I write this? const mysteryFn = (arr, key, childrenToUpdate) => { // Do something.. return arr; } const key = 'goc'; const childrenToUpdate = [{ key: '12345', }, { key: '25221a', }]; const newArr = mysteryFn(arr, key, childrenToUpdate); // expected newArr const newArr= [{ key: '001', children: [{ key: 'abc', children: [{ key: 'ee', children: [{ key: 'goc', children: [{ key: '12345', }, { key: '25221a', }], }, { key: 'zzv', children: [{ key: '241', }], }], }], }, { key: '125', children: undefined, }], }, { key: '003', children: [{ key: 'ahge', }, { key: '21521', }], }];
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Esto se puede lograr con la recursividad.

 const mysteryFn = (arr, key, childrenToUpdate) => { // if children are undefined if (!arr) return; // loop over each entry and its children to find // entry with passed key arr.forEach((entry) => { if (entry.key === key) { entry.children = childrenToUpdate; } // recursive call to traverse children mysteryFn(entry.children, key, childrenToUpdate); }); return arr; };
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