reduce메서드 줄인다는 의미처럼 배열내의 여러 값들을 단일의 결과값으로 반환시키는 함수.
reduce는 각 네개의 인자를 갖는다.
accumulator(연산된 값을 저장하는 레지스토리)
currentValue(현재값)
currentIndex(현재인덱스)
array(배열)
작동방식을 간단히 알아보자.
[0, 1, 2, 3, 4].reduce(function(accumulator, currentValue, currentIndex, array) {
return accumulator + currentValue;
});
// 0 + 1 + 2 + 3 + 4 //callback을 통한 연산
위 코드는 화살표 함수를 통해 아래와 같이 사용가능하다.
[0, 1, 2, 3, 4].reduce( (prev, curr) => prev + curr );
let arr = [1, 2, 1, 2, 3, 5, 4, 5, 3, 4, 4, 4, 4];
let result = arr.sort().reduce((accumulator, current) => {
const length = accumulator.length
if (length === 0 || accumulator[length - 1] !== current) {
accumulator.push(current);
}
return accumulator;
}, []);
console.log(result); //[1,2,3,4,5]
위와 같이 배열값이 저장 되어질때의 값과 현재 값을 통해 중복 배열들을 제거할 수 있다.
reduce메서드는 인자값이 많아 익히기 까다로운 대신 활용도가 상당히 높아보인다. 배열 내 객체 값등의 접근이 필요할 경우 기억해두었다 활용해보도록 해야겠다.