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

215
Views
Función recursiva para crear una lista a partir de otra lista profunda

Otra pregunta sobre la función recursiva, no puedo entenderlos. Tengo una lista con grupos que pueden tener cualquier profundidad, un ejemplo:

 { Id: 1, Name:"Root", Children: [ { Id: 1, Name:"", Children: [ { Id: 1, Name:"", Children: [ { Id: 1, Name:"", Children: [] }, ] }, ] }, { Id: 2, Name:"", Children: [] }, { Id: 3, Name:"", Children: [] }, ] }

Muestro estos grupos en un menú desplegable que el usuario puede seleccionar. Lo que debo hacer es cuando el usuario hace clic en cualquier grupo, debo mostrar todos los usuarios que forman parte de ese grupo Y sus subgrupos.

La información sobre qué usuarios pertenecen al grupo y sus subgrupos se mantiene en la lista de usuarios. Esa lista es plana y cada usuario tiene un accesorio que contiene una matriz de membresía.

He reescrito este método a continuación varias veces, esto es lo más cercano que tengo, pero esto más que duplica la longitud esperada porque obtengo duplicados.

 const getAllUsersInGroup = (group, usersFiltered) => { if (!group.Children.length) return usersFiltered.flat(); return group.Children.flatMap((g) => { return getAllUsersInGroup( g, [...usersFiltered, users.filter((u) => u.Memberships.some((m) => m.GroupId === g.Id))] ); }); };

Otra prueba devuelve casi todo, pero faltan usuarios en grupos más grandes con muchos subgrupos.

 const getAllUsersInGroup = (group, userss) => { if (!group.Children.length) return [...userss].flat(); return group.Children.flatMap((g) => { return getAllUsersInGroup(g, users.filter((u) => u.Memberships.some((m) => m.GroupId === g.Id)), ); }); };

Debo estar atascado en algún pensamiento equivocado o simplemente estúpido. Tal vez no necesite verificar la longitud de los niños y solo revisarlos todos, pero según tengo entendido, necesita alguna declaración que detenga el método.

¡Un poco de ayuda sería muy apreciada!

Saludos

about 4 years ago · Juan Pablo Isaza
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!