let numbers = [5, 6, 11, 47];
function getSum(total, num) {
return total +num;
}
// console.log(numbers.reduce(getSum, 0)) = 69
let data = [
{ name: '101 ćwiczeń z ziemi', amount: 1, price: 45 },
{ name: 'Myśleć jak koń', amount: 2, price: 55 }
]
let cost = data.reduce((total, order) => {
return total + (order.amount * order.price)
}, 0)
// console.log(cost) = 155
Budowa tej funkcji też jest prosta:
reduce(function (prev, item), initialValue)
Posiada dwa argumenty. Pierwszy to funkcja, która przechowuje poprzednią wartość oraz obecny element, a drugi to początkowa wartość od jakiej zaczynamy liczyć. Przelatuje ona po kolei po każdym polu z tablicy, zaczynając od initialValue i przekazując nam poprzedni stan (czyli np sumę) oraz obecny element do przetworzenia. Naszym zadaniem jest tylko zwrócić w tej funkcji to co chcemy przekazać do kolejnej iteracji itd. aż się skończy tablica.