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

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

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 Report

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