reduce()는 배열을 다루는 메소드로 누적값(accumulator)과 현재값(currentValue)을 인자로 가지고 있다는 특징이 있다. 이러한 특징으로 배열을 여러가지로 요리(?)할 수 있도록 만든다.
가장 간단한 예시는 모든 배열의 요소를 더하는 것으로 reduce의 속성을 이해하기에 좋다.
arr.reduce(callback[, initialValue])
const reducer = (accumulator, currentValue) => accumulator + currentValue;
// 1 + 2 + 3 + 4
console.log(numbers.reduce(reducer)); // 10 => 배열의 원소 1,2,3,4를 모두 더한 값을 반환한다.
// 5 + 1 + 2 + 3 + 4
console.log(numbers.reduce(reducer, 5)); // 15 => initialValue로 5를 지정해주었기 때문에 accumulator의 첫 값은 5가 되고 나머지 1,2,3,4를 더해 15를 반환한다.