Soma do array de objetos em JavaScript
-
Use a função
reduce
para somar os valores de um array de objetos em JavaScript -
Use as funções
map()
ereduce()
para somar os valores de um array de objetos em JavaScript
um array pode armazenar tipos semelhantes de elementos, e isso também inclui objetos.
Neste artigo, aprenderemos maneiras melhores e eficientes de somar os valores de um array de objetos em JavaScript.
Em nossos exemplos, somaremos a Amount
de todos os objetos na seguinte matriz.
fruits = [
{description: 'orange', Amount: 50},
{description: 'orange', Amount: 50},
{description: 'apple', Amount: 75},
{description: 'kiwi', Amount: 35},
{description: 'watermelon', Amount: 25},
];
Use a função reduce
para somar os valores de um array de objetos em JavaScript
Podemos criar uma função chamada sum()
e usar o método reduce()
para reduzir o array a um único valor, que é a soma de todos os valores do array.
Este método ajuda a filtrar e mapear o valor simultaneamente em uma única passagem.
Implementamos isso no código a seguir.
class fruitCollection extends Array {
sum(key) {
return this.reduce((a, b) => a + (b[key] || 0), 0);
}
}
const fruit = new fruitCollection(
...[{description: 'orange', Amount: 50},
{description: 'orange', Amount: 50},
{description: 'apple', Amount: 75},
{description: 'kiwi', Amount: 35},
{description: 'watermelon', Amount: 25},
]);
console.log(fruit.sum('Amount'));
Resultado:
235
Use as funções map()
e reduce()
para somar os valores de um array de objetos em JavaScript
A função map()
constrói uma nova matriz, alterando o valor de cada elemento em um array, respectivamente. Em seguida, a função de filtro é usada para remover os valores que não se enquadram nessa categoria. Finalmente, a função reduce()
pega todos os valores e retorna um único valor, que é a soma necessária.
Por exemplo,
fruits = [
{description: 'orange', Amount: 50},
{description: 'orange', Amount: 50},
{description: 'apple', Amount: 75},
{description: 'kiwi', Amount: 35},
{description: 'watermelon', Amount: 25},
];
const sumall =
fruits.map(item => item.amount).reduce((prev, curr) => prev + curr, 0);
console.log(sumall);
Resultado:
235