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

407
Vistas
¿Cómo evitar forEach anidado si es posible?

Quiero mejorar mi código. Es un código javascript simple donde estoy obteniendo algunos datos de la API de gitlab y quiero obtener grupos de gitlab y sus miembros, luego quiero que cada miembro muestre sus grupos.

 let accounts = [] let subGroups = await api.getSubgroups(); subGroups = subGroups.map((group) => { const { id, name, full_path } = group; return { id, name, full_path } }) subGroups = subGroups.map(async (group) => { const { id } = group; const groupMembers = await api.getGroupMembers(id); return { group_id: id, groupMembers }; }); subGroups = await Promise.all(subGroups); const map = subGroups.forEach((group) => { group.groupMembers.forEach((member) => { accounts.push(member) }) })

Primero quiero obtener la lista de grupos y miembros del grupo. Luego haz una serie de personas distintas y luego dales su grupo. Por favor, ¿cómo puedo eliminar el foreach anidado? ¿Es posible? Y también quiero preguntar cómo obtener solo las propiedades necesarias del miembro (como solo el nombre y la identificación) en la matriz de cuentas

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Si tiene una estructura de datos X por Y, y necesita iterar sobre todos los elementos, eso requerirá fundamentalmente operaciones X * Y; no hay nada de malo en usar un forEach anidado si eso es lo que requiere la lógica.

Sin embargo, en JS moderno, hay un método .flatMap disponible que hará que las cosas sean un poco más agradables:

 const accounts = subGroups.flatMap(group => group.groupMembers);

Si también desea extraer solo ciertas propiedades de cada groupMember , use la misma técnica que está haciendo inicialmente al reorganizar la matriz de objetos de los subGroups .

 const accounts = subGroups .flatMap(group => group.groupMembers) .map(({ name, id }) => ({ name, id }));

si desea mantener solo las propiedades de name e id .

about 4 years ago · Juan Pablo Isaza Denunciar

0

Simplemente puede hacerlo así:

 let accounts = []; let subGroups = await api.getSubgroups(); subGroups.forEach(group => { let { id } = group; let groupMembers = await api.getGroupMembers(id); groupMembers.forEach(accounts.push) })
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