reduce는 배열에 각 요소에 대해 주어진 함수를 실행하고, 결과값을 반환합니다. map이나 filter가 해당 배열내 모든 값을 순회하면서 새로운 배열을 만들어낸다면, reduce는 배열내의 값을 변경합니다. reduce라는 이름이 쓰인 이유는 보통 배열 내 값을 하나로 줄이기 때문에 붙여진 이름입니다. 내용처럼 배열 내 숫자들을 모두 더하거나, 빼거나 등등의 작용을 할 수 있습니다.
하지만 reduce메소드가 반환하는 값은 하나의 객체일수도, 배열일수도 있습니다.
Array.reduce(function(acc, cur, index, array), initialValue);
acc(accumulator)는 콜백함수의 반환값을 누적해 저장합니다. 콜백함수의 이전 반환값, 또는 콜백함수의 첫번째 호출이면서,
initialValue를 제공한 경우에는initialValue의 값입니다.
cur(currentValue)는 순회하면서 사용되는 현재의 값입니다.
index는 현재의 값의 인덱스 값입니다.
array는 reduce를 호출한 배열을 나타냅니다.
initialValue는 callback함수에서 최초의 acc에서 사용 할 값을 나타냅니다. 빈 배열에서 initialValue없이 reduce를 사용하면 오류가 발생합니다.
또한 곱셈연산을 사용할때 1의 값을 넣어주지 않으면 정상적으로 작동하지 않는 경우도 발생합니다.
const arr = [1,2,3,4,5]
const arr2 = arr.reduce(function(acc,cur){
return acc + cur;
});
console.log(arr2) // 15
위의 예시처럼 배열안에 모든 값을 더해 새로운 변수에 저장 할 수 있습니다.