◼ reduce
MDN-reduce
- 파라미터에 주어진
리듀서 함수를 각 배열의 요소에 대해 실행하고 하나의 결과를 반환한다.
- 배열명.reduce(callback[, initialValue ]) 형태로 작성한다.
- callback : 각 요소들이 수행할 함수. 네개의 인자를 작성할 수 있다.
- Accumulator (acc) 누산기
- Current Value 현재 값
- Current Index (Optional) 현재 인덱스
- Source Array (Optional) 원본 배열
- initialValue (Optional)
배열의 최초 호출시 acc에 저장하는 값. 없으면 배열의 첫번째 요소를 초기값으로 사용한다.
- initialValue가 있으면 Current Index는 0부터 시작하고 initialValue가 없으면 Current Index는 1부터 시작한다. (initialValue가 없으면 배열의 0번째 값을 이미 acc에 넣었으니 배열의 인덱스는 1이다)
- 리듀서 함수의 return 값이 acc인자로 저장된다.
작동 방식을 예제로 살펴보자
◼ 예제
◻ 배열의 가장 큰 수 찾기 - function
const numbers = [1, 20, 3, 4, 5];
const maxNum = numbers.reduce(function (previous, current) {
if (current > previous) {
return current;
} else return previous;
});
console.log(maxNum);
◻ 배열의 가장 큰 수 찾기 - 화살표 함수
const maxNum2 = numbers.reduce((previous, current) => {
if (current > previous) {
return current;
} else return previous;
});
console.log(maxNum2);
◼ 정리
- reduce()의 파라미터로는 리듀서 함수와 초기값이 있다.
- 리듀서 함수의 파라미터에는 4가지가 있으며 필수적으로 값을 저장해나갈 변수(acc 누산기)와 현재 값을 저장할 변수(current)가 있어야한다
- reducer 함수의 리턴 값은 누산기에 저장된다