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

113
Views
¿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 answers
Answer question

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 Report

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 Report

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