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

105
Views
Cómo reducir una matriz de objetos a un objeto organizado por claves

tengo una matriz

 const countries = [{ name: "Angola", region: "Africa" }, { name: "Spain", region: "Europe" }, { name: "Italy", region: "Europe" }]

Necesito que el resultado sea:

 const result = { Europe: [{ name: "Spain" }, { name: "italy" }], Africa: [{ name: "Angola" }] }

He intentado 2 enfoques:

  • Enfoque 1:
 const result = countries.reduce((acc, { name, region }) => { acc[region] = [...acc[region], { name }] return acc }, {})
  • Enfoque 2:
 const result = countries.reduce((acc, { name, region }) => { return { ...acc, [region]: [...acc[region], { name }] } }, {})

Ninguno de ellos funciona porque no pude encontrar una manera de distribuir los elementos existentes en la matriz, que en una primera iteración es obviamente nulo.

Gracias

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

De repente encontré la solución a mi problema.

 const result = countries.reduce((acc, { name, region }) => { return { ...(acc || {}), [region]: [...(acc[region] || []), { name }] } }, {})
about 4 years ago · Juan Pablo Isaza Report

0

Puede resolver el problema definiendo acc[region]

 const result = countries.reduce((acc, { name, region }) => { if (!acc[region]) acc[region] = []; acc[region] = [...acc[region], { name }] return acc }, {})
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!