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

109
Vistas
¿Array tiene un elemento de nodo? js

Necesito revisar la matriz y averiguar si mi matriz tiene elementos secundarios. Ejemplo cada vez que tengo una matriz como una:

 [ id: 1, title: 'Parent', children : [ { id: 13, title: 'Child' } ]

cada vez que tengo matriz:

 [ id: 1, title: 'Parent', children : [ { id: 13, title: 'Child' }, { id: 14, title: 'Child two' } ]

Para explicar mejor. Los elementos tienen sus elementos padre, hijo. ¿Cuál es mi tarea? Necesito encontrar todos los elementos que obtengo y ponerlos en una matriz por separado. Entonces, necesito extraer estos elementos secundarios de la matriz y colocarlos en una matriz donde están todos los elementos.

Después de recorrer la matriz anterior, necesito obtener una nueva matriz como:

DE :

 [ id: 1, title: 'Parent', children : [ { id: 13, title: 'Child' }, { id: 14, title: 'Child two' } ]

A

 [ { id: 1, title: 'Parent', }, { id: 13, title: 'Child' }, { id: 14, title: 'Child two' } ]
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Aquí hay otra forma recursiva de hacerlo:

La función externa collect(arr) proporciona un ámbito para la función interna llamada recursivamente getItems() . Cada vez que se encuentra un elemento secundario, las propiedades id y title se ensamblan en un nuevo objeto y se insertan en la matriz de resultados res que se definió en collect() .

 const data=[{id:1, title:'Parent', children:[{id:13, title:'Child'}, {id:14, title:'Child two', children: [{id:15, title:'Grandchild'}] }]}, {id:16, title:'Uncle'} ]; function collect(arr){ const ret=[]; function getItems(ob){ ret.push({id:ob.id,title:ob.title}); if (ob.children) ob.children.forEach(getItems); } arr.forEach(getItems) return ret } console.log(collect(data))

about 4 years ago · Juan Pablo Isaza Denunciar

0

Otra solución:

 const data = [{"id":1,"title":"Parent","children":[{"id":13,"title":"Child"},{"id":14,"title":"Child two"}]}]; const flatObj = (arr) => arr.reduce((acc, { id, title, children }) => ([ ...acc, ...(children) ? [{ id, title }, ...flatObj(children)] : [{ id, title }] ]), []); console.log(flatObj(data));
 .as-console-wrapper{min-height: 100%!important; top: 0}

about 4 years ago · Juan Pablo Isaza Denunciar

0

Dada una matriz de objetos en la que un objeto siempre tendrá id , title y puede tener o no los elementos children prop , el objetivo declarado/asumido es transformar esta matriz en una matriz que solo tiene id y title (incluidos los elementos id y title de los elementos secundarios). ).

Código de muestra

 const getIdTitles = arr => ( arr.reduce( (f, i) => ( { ...f, [i.id] : i.title, ...( 'children' in i ? getIdTitles(i.children) : {} ) } ), {} ) );

Acercarse

  • La idea es utilizar un método recursivo.
  • Iterar a través de la matriz dada usando reduce
  • Utilice ... spread-operator para difundir primero los contenidos del agregador f
  • A continuación, agregue la id y el title del elemento de matriz actual
  • Entonces, si el elemento actual contiene children , recurse

Fragmento de código

 const someArray = [{ id: 1, title: 'Parent', children : [ { id: 13, title: 'Child' }, { id: 14, title: 'Child two' } ] }]; const getIdTitles = arr => ( arr.reduce( (f, i) => ( { ...f, [i.id] : i.title, ...( 'children' in i ? getIdTitles(i.children) : {} ) } ), {} ) ); console.log(getIdTitles(someArray))

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