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

167
Views
Usando reducir dentro del mapa

Cada vez que me gustaría usar reducir dentro de una función de mapa, aparece el error "reducir no es una función".

Tengo una matriz donde estoy mapeando a través de 2 claves. Fecha y Monto. A continuación se muestra la matriz con objetos.

 const dividendArrayFiltered = [ { "date": "2021-11-09", "amount": 0.5 }, { "date": "2021-11-08", "amount": 0.5 }, { "date": "2021-11-08", "amount": 0.5 }, { "date": "2021-11-11", "amount": 1 }, { "date": "2021-11-11", "amount": 1 } ]

Dentro de este mapa me gustaría reducir los valores con la misma fecha.

Este es el código que está dando el error. No estoy muy seguro de por qué la función de reducción no funciona. Espero que puedas ayudarme. ¡Gracias!

 const summedDividend = dividendArrayFiltered.map(({ date, amount }) => { const grouped = date.reduce( (a, d, i) => a.set(d, (a.get(d) ?? 0) + amount[i]), new Map() ); return { date: [...grouped.keys()], amount: [...grouped.values()], }; });
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Su propia solución no funciona porque dentro de la función de mapa solo tiene acceso al elemento actual, no a la matriz, pero la función de reducción solo se puede usar en matrices.

Solución alternativa :

Puede crear una matriz vacía, donde inserta solo estos elementos de su matriz de origen, que no tienen la misma fecha que uno de los elementos de su nueva matriz.

 let uniqueArray = [] // iterate through all array elements dividendArrayFiltered.forEach((item) => { // check if an element with the current item date exists in your new uniqueArray and which position index it has const itemPos = uniqueArray.findIndex(uniqueItem => uniqueItem.date == item.date) // if the index is negative, it's not included in the array, so you push your item to the new array if(itemPos < 0) { uniqueArray.push(item) } // if it's included, you take the old amount and add your new value else { uniqueArray[itemPos].amount = uniqueArray[itemPos].amount + item.amount; } }); console.log(uniqueArray);

En uniqueArray ahora solo hay elementos de fecha únicos.

about 4 years ago · Juan Pablo Isaza Report

0

Puede reducir la matriz original directamente y también utilizar findIndex() :

 const dividendArrayFiltered = [ { date: '2021-11-09', amount: 0.5 }, { date: '2021-11-08', amount: 0.5 }, { date: '2021-11-08', amount: 0.5 }, { date: '2021-11-11', amount: 1 }, { date: '2021-11-11', amount: 1 } ] const grouped = dividendArrayFiltered.reduce((a, c) => { const dateIndex = a.findIndex(o => o.date === c.date) if (dateIndex !== -1) a[dateIndex].amount += c.amount else a.push({ date: c.date, amount: c.amount }) return a }, []) console.log(grouped)
 .as-console-wrapper { min-height: 100% }

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!