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

124
Visualizações
How to use both map and reduce in same function in javascript?

I would like to display the value 122 of amount but I don't know how to do that.

I have this value

const products = [
  {
    id: 1,
    productM: [
      {
        product: {
          productId: 1222,
          price: {
            currency: 'EUR',
            amount: 122,
          },
        },
      },
    ],
    label: 'corner-1',
    sourceId: 23333,
  },
]

I tried this function but it's not working and I don't know how to do that

function getTotalPrice(products) {
  const arr = products.map((product) =>
    product.productM.map((p) => p.price.amount)
  );
  return arr.reduce(
    (accumulator, product) => accumulator + product,
    0
  );
}

If anyone can help, many thanks

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

I think this will work, you assumed that p was product but in reality p is the whole object, try this:

function getTotalPrice(products) {
  const arr = products.map((product) =>
    product.productM.reduce(
      (total, { product }) => total + product.price.amount,
      0
    )
  );
  return arr.reduce((accumulator, product) => accumulator + product, 0);
}

ProductM is an array so I changed it from map to a reduce, to sum all the productsM prices in it

about 4 years ago · Juan Pablo Isaza Relatório

0

Instead of map and reduce. You can use reduce only.

Since products is nested one more level, you can use reduce twice to get it done.

Try like this.

function getTotalPrice(products) {
    return products.reduce((prev, curr) => {
        return (
            prev +
            curr.productM.reduce((innerPrev, innerCurr) => {
                return innerPrev + innerCurr.product.price.amount;
            }, 0)
        );
    }, 0);
}
about 4 years ago · Juan Pablo Isaza Relatório

0

You don't need to map anything, you can reduce directly over the original array:

function getTotalPrice(products) {
  return products.reduce((acc, p) => acc + p.productM.product.price.amount, 0);
}
about 4 years ago · Juan Pablo Isaza Relatório
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