Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

216
Visualizações
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
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda