JS – reduce()

타겟 배열을 가지고 배열의 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)

위 예제는 이전값과 현재값을 비교하여 큰 값을 순서대로 반환하다보면 제일 큰 값을 구할 수 있는 예제다.

TOP