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?
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?
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:
acc
= 0 cur
= 5 -> acc
+cur
= 5 -> acc
= 5acc
= 5 cur
= 4 -> acc
+cur
= 9 -> acc
= 9acc
= 9 cur
= 2 -> acc
+cur
= 11 -> acc
= 11reduce
to wartość początkowa akumulatora.Dodatkowo powiem, że to nie jest tablica, tylko obiekt.