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

180
Vistas
¿Encontrar el elemento si existe en una matriz de niños anidados profundos?

Necesito encontrar si el elemento existe en una matriz anidada profunda.

Ejemplo :

 let arr = [ { id: 1 , title : 'Test' , children: [ {id: 1 , title: 'Title' , hasChild : true }, {id: 1 , title: 'Title' , hasChild : false }, {id: 1 , title: 'Title' }, ] }, ]

Necesito repetir el pensamiento arr.children y tratar de encontrar si tiene una propiedad con el nombre hasChild find item y establecerlo en falso.

Después de hacer un bucle, necesito obtener una matriz como :

 let arr = [ { id: 1 , title : 'Test' , children: [ {id: 1 , title: 'Title' , hasChild : false }, //here is changed hasChild to false {id: 1 , title: 'Title' , hasChild : false }, {id: 1 , title: 'Title' }, ] }, ]

Estoy encontrando la manera pero necesito una mejor solución:

 arr.map(it) => { if (it.hasChild) { it.dashCheck = false; } });
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

demostración:

 let arr = [{ id: 1 , title : 'Test' , children: [ {id: 1 , title: 'Title' , hasChild : true }, {id: 1 , title: 'Title' , hasChild : false }, {id: 1 , title: 'Title' }, ] }]; arr.forEach((obj) => { obj.children.forEach((childObj) => { if (childObj.hasChild) { childObj.hasChild = false; } }); }); console.log(arr);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede usar funciones recursivas para realizar operaciones en objetos/matrices infinitamente anidados, etc.

 function recursiveUpdate(array, index) { const element = array[index]; if(!element) return; if(Object.keys(element).indexOf('children') > -1) { element.hasChild = true; recursiveUpdate(element['children'], 0); } else { element.hasChild = false; recursiveUpdate(array, index+1); } } recursiveUpdate(arr, 0);
about 4 years ago · Juan Pablo Isaza Denunciar

0

Editar : parece que la pregunta se modificó después de dar mi respuesta. Actualicé mi respuesta para reflejar esto.

Si la estructura de arr siempre es como la que mencionaste en tu pregunta, podrías simplemente iterar sobre children elementos secundarios usando el método forEach de la clase Array :

 arr.forEach(item => { item.children.forEach(child => { // Edit: Revised solution if (child.hasChild === true) { child.hasChild = false; } // Edit: Previous solution // child.hasChild = child.hasChild === true ? false : child.hasChild; }); });

Nota : Esto alterará la matriz original y no creará una copia con el valor alterado para hasChild .

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