Somma di array di oggetti in JavaScript

Shivam Arora 12 ottobre 2023
  1. Usa la funzione reduce per sommare i valori di un array di oggetti in JavaScript
  2. Utilizzare le funzioni map() e reduce() per sommare i valori di un array di oggetti in JavaScript
Somma di array di oggetti in JavaScript

Un array può memorizzare tipi simili di elementi e questo include anche gli oggetti.

In questo articolo impareremo modi migliori ed efficienti per sommare i valori di un array di oggetti in JavaScript.

Nei nostri esempi, sommeremo la Amount per tutti gli oggetti nel seguente array.

fruits = [
  {description: 'orange', Amount: 50},
  {description: 'orange', Amount: 50},
  {description: 'apple', Amount: 75},
  {description: 'kiwi', Amount: 35},
  {description: 'watermelon', Amount: 25},
];

Usa la funzione reduce per sommare i valori di un array di oggetti in JavaScript

Possiamo creare una funzione chiamata sum() e utilizzare il metodo reduce() per ridurre l’array a un singolo valore, che è la somma di tutti i valori nell’array.

Questo metodo aiuta a filtrare e mappare il valore contemporaneamente in un unico passaggio.

Lo implementiamo nel codice seguente.

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'));

Produzione:

235

Utilizzare le funzioni map() e reduce() per sommare i valori di un array di oggetti in JavaScript

La funzione map() costruisce un nuovo array modificando rispettivamente il valore di ogni elemento in un array. Quindi la funzione di filtro viene utilizzata per rimuovere i valori che non rientrano in quella categoria. Infine, la funzione reduce() prende tutti i valori e restituisce un unico valore, che è la somma richiesta.

Per esempio,

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);

Produzione:

235

Articolo correlato - JavaScript Object