reduce

holang-i·2021년 2월 7일
0
post-custom-banner

reduce

reduce() 메서드는 배열의 각 요소에 대해 주어진 리듀서(reducer)함수를 실행하고, 하나의 결과값을 배열로 반환한다.

reduce는 초기값을 지정할 수 있는데 만약에 초기값을 정하지 않을 때는 배열의 0번째 요소가 초기값이 된다.
이 초기값은 누적값의 기반, 기초가 된다.

그리고 그 다음부터는 현재값이 되고, 함수에서 정의해놓은 작업을 배열의 끝 인덱스까지 반복하고, 반환하는 값은 배열의 누적값을 반환하게 된다.

리듀서 함수는 4개의 인자를 가진다.

  1. Accumulator (누적 값)
  2. Current Value (현재 값)
  3. Current Index (현재 인덱스)
  4. Source Array (원본 배열)

리듀서 함수의 반환 값은 Accumulator에 할당되고, Accumulator는 순회 중 유지되므로 결국 최종 결과는 하나의 값이 된다.

배열의 합을 구하는 리듀서 함수를 정의하고 리듀스로 실행시켜 보았다.

아래의 코드는 초기값을 지정하지 않았을 때와 초기값을 지정했을 때의 결과이다.

const arr1 = [1, 2, 3, 4];
const reducer = function(acc, curVal) {
	return acc + curVal;
}

//1+2+3+4
console.log(arr1.reduce(reducer)); //10

//7+1+2+3+4
console.log(arr1.reduce(reducer, 7)); //17

reduce함수를 이용해서 더하기 처리

reduce함수를 이용해서 필터, 맵 메서드처럼 처리도 가능하다.

배열을 초기값으로 줘서 배열에 값을 넣어 맵 메서드를 사용한 것처럼 반환하기

reduce 정리

배열의 값을 줄여서 하나의 값으로 만들어 주는 역할을 한다. 리턴값이 숫자, 배열, 객체이던간에 하나의 값으로 된다.

post-custom-banner

0개의 댓글