Suma wszystkich wartości w słowniku

0

Witam,

Czy ktoś mógłby mi powiedzieć jak zsumować wszystkie wartości w tablicy bez względu na klucz.
Na przykład mamy

{ 'item1': 5, 'item2': 4, 'item3': 2}

Jak zsumować wszystkie wartości bez względu na klucz tak żeby wyszło 11?

2

Użyj reduce:

let obj = { 'item1': 5, 'item2': 4, 'item3': 2};
let total = Object.values(obj).reduce((acc, cur)=>{
  return acc + cur;
}, 0)

Codepen: https://codepen.io/zerakot/pen/BarGydX?editors=1010

Co tu się dzieje?
Na początek oczywiście deklarujemy obiekt.
Następnie używamy Object.values(). Co to robi? Otóż na podstawie obiekty tworzy tablicę, która zawiera wszystkie jego wartości (w tym przypadku będą to liczby).
Na koniec używamy funkcji reduce(). Deklarujemy w niej akumulator (acc) oraz wartość aktualnie indeksowanego elementu (cur). Akumulator to taka zmienna, która przez cały proces przechowuje nam dane, które w jego trakcie możemy edytować. Aktualnie indeksowany element to nic innego niż aktualny indeks tablicy, do którego mamy teraz dostęp. Podczas redukowania do akumulatora dodajemy aktualną wartość. Po kolei każda iteracja:

  1. iteracja acc = 0 cur = 5 -> acc+cur = 5 -> acc = 5
  2. iteracja acc = 5 cur = 4 -> acc+cur = 9 -> acc = 9
  3. iteracja acc = 9 cur = 2 -> acc+cur = 11 -> acc = 11
    Te zero po przecinku na końcu reduce to wartość początkowa akumulatora.

Dodatkowo powiem, że to nie jest tablica, tylko obiekt.

1 użytkowników online, w tym zalogowanych: 0, gości: 1