타겟 배열을 가지고 배열의 0번째부터 끝번째까지 순차적으로 가공을 거치는 데 이때 결과값을 누산기는 곳에 할당하고 최종 결과값은 이 마지막 누산기에 할당된 값을 반환한다.
사용 방법은 아래와 같다.
타겟 배열.reduce(function(누산기, 현재값, 현재값 index, 배열) { return 연산과 같은 가공 }, 초기값);
하지만 대부분 누산기의 값과 현재값을 비교하여 사용하기 때문에 아래처럼 쓴다.
초기값도 필요에 따라 생략 가능하다.
(누산기라는 말이 어려우면 이전 결과 값이라 생각하면 좋을 것 같다.)
타겟 배열.reduce(function(누산기, 현재값) { return 연산과 같은 가공 });
예제로 살펴보자.
const arr = [0,1,2,3,4]; const result = arr.reduce(function(prevValue,currentValue){ return prevValue + currentValue }) const resultES6 = arr.reduce( (prevValue,currentValue) => prevValue + currentValue) //ES6 console.log(result) console.log(resultES6)
위 예제는 배열의 첫번째 값 0부터 보면 이전값이나 초기값이 없으니 현재값 0을 더해서 결과값을 0 반환,
배열의 두번째 값1은 이전에 반환값인 0과 현재값 1을 더해서 결과값을 1 반환,
배열의 세번째 값2는 이전에 반환값인 1과 현재값 2를 더해서 결과값을 3 반환
... 이렇게 해서 최종 반환 결과값인 10이 나오는 것이다.
이번에는 조건문을 예로 들자
const arr = [0,1,2,3,4]; const result = arr.reduce(function(prevValue,currentValue){ return prevValue > currentValue ? prevValue : currentValue }) const resultES6 = arr.reduce( (prevValue,currentValue) => prevValue > currentValue ? prevValue : currentValue) //ES6 console.log(result) console.log(resultES6)
위 예제는 이전값과 현재값을 비교하여 큰 값을 순서대로 반환하다보면 제일 큰 값을 구할 수 있는 예제다.