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

205
Visualizações
¿Cómo sumar valores en objetos con matrices anidadas?

tengo la siguiente estructura:

 groupedData = { rice: [ { name: 'white rice' quantity: 2 category: 'rice' }, { name: 'brown rice' quantity: 1 category: 'rice' } ], water: [ { name: 'sparkle water' quantity: 1 category: 'water' }, { name: 'still water' quantity: 1 category: 'water' } ], tea: [{ name: 'green tea' quantity: 1 category: 'water' }], }

Lo que quiero lograr es tener una cantidad sumada de cada categoría, así: arroz: 3, agua: 2, té: 1

Intenté lo siguiente:

 const sum = () => { let quantity = [] for (var property in groupedData) { for (let i=0; i< groupedData[property].length; i++){ quantity[property] = groupedData[property][i].quantity; } } return quantity; }

pero no devuelve datos sumados sino solo la cantidad del primer artículo [rice: 2, water: 1, tea: 1]

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

0

Su solución no agrega los nodos. Solo agrega la quantity de cada nodo

 const groupedData = { rice: [ { name: 'white rice', quantity: 2, category: 'rice' }, { name: 'brown rice', quantity: 1, category: 'rice' } ], water: [ { name: 'sparkle water', quantity: 1, category: 'water' }, { name: 'still water', quantity: 1, category: 'water' } ], tea: [ { name: 'green tea', quantity: 1, category: 'water' }], }; const sum = () => { let quantity = {} for (var property in groupedData) { for (let i = 0; i < groupedData[property].length; i++) { quantity[property] = quantity[property] ? quantity[property] : 0; quantity[property] += groupedData[property][i].quantity; } } return quantity; }; console.log(sum());

También puede utilizar Object.entries , Array.forEach y Array.reduce para lograrlo.

 const groupedData = { rice: [ { name: 'white rice', quantity: 2, category: 'rice' }, { name: 'brown rice', quantity: 1, category: 'rice' } ], water: [ { name: 'sparkle water', quantity: 1, category: 'water' }, { name: 'still water', quantity: 1, category: 'water' } ], tea: [ { name: 'green tea', quantity: 1, category: 'water' }], }; const sum = () => { let quantity = {}; Object.entries(groupedData).forEach(([key, value]) => { quantity[key] = value.reduce((acc, { quantity }) => acc += quantity, 0) }); return quantity; }; console.log(sum());

about 4 years ago · Juan Pablo Isaza Relatório

0

Esto se basa en su pregunta.

 const groupedData = { rice: [{ name: 'white rice', quantity: 2, category: 'rice', }, { name: 'brown rice', quantity: 1, category: 'rice', } ], water: [{ name: 'sparkle water', quantity: 1, category: 'water', }, { name: 'still water', quantity: 1, category: 'water', } ], tea: [{ name: 'green tea', quantity: 1, category: 'water', }], } const sum = () => { let quantity = {} for (var property in groupedData) { for (let i = 0; i < groupedData[property].length; i++) { quantity = { ...quantity, [property]: quantity[property] ? quantity[property] + groupedData[property][i].quantity : groupedData[property][i].quantity } } } return quantity; } console.log(sum());

Y esta es mi respuesta con reducir

 const groupedData = { rice: [{ name: 'white rice', quantity: 2, category: 'rice', }, { name: 'brown rice', quantity: 1, category: 'rice', } ], water: [{ name: 'sparkle water', quantity: 1, category: 'water', }, { name: 'still water', quantity: 1, category: 'water', } ], tea: [{ name: 'green tea', quantity: 1, category: 'water', }], } const sum = () => { let res = {} for (var props in groupedData) { const item = groupedData[props].reduce((acc, cur) => { acc += cur.quantity; return acc; }, 0); res[props] = item; } return res; } console.log(sum());

about 4 years ago · Juan Pablo Isaza Relatório

0

Puedes hacer algo como esto:

 const result = Object.entries(groupedData).reduce((prev, [k, v]) => { const sums = { ...prev, [k]: v.reduce((p, c) => p + c.quantity, 0), } return sums }, {})

Aquí está el fragmento completo:

 const groupedData = { rice: [{ name: 'white rice', quantity: 2, category: 'rice', }, { name: 'brown rice', quantity: 1, category: 'rice', }, ], water: [{ name: 'sparkle water', quantity: 1, category: 'water', }, { name: 'still water', quantity: 1, category: 'water', }, ], tea: [{ name: 'green tea', quantity: 1, category: 'water', }, ], } const result = Object.entries(groupedData).reduce((prev, [k, v]) => { const sums = { ...prev, [k]: v.reduce((p, c) => p + c.quantity, 0), } return sums }, {}) console.log(result)

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