[JavaScript] reduce : 값을 축약하는 함수
reduce : 값을 축약하는 함수
arr.reduce( callback(accumulator, item, index, array), [initialValue] )
arr.reduce( callback(accumulator, item, index, array), [initialValue] )
array.reduce((누적값, 현잿값, 인덱스, 요소) => { return 결과 }, [초깃값]);
- 콜백 함수의 인수 -
accumulator - 이전 함수 호출에 대한 결과
item - 현재 배열의 요소
index - 요소의 위치
array - 배열
initialValue - 옵션값이며 함수 최초 호출시 사용되는 초깃값이다. 옵션이지만 필수적으로 적는것이 좋다. 배열에 요소가 하나도 없는 빈배열이 존재할 경우 오류를 반환하게 되므로 초깃값을 설정하는것이 좋다. (권장)
콜백함수에서 다른것은 생략가능하지만 누적값과 현재값은 필수이다.
//초깃값 설정X
let result = a.reduce((acc, cur)=>{
return acc + cur
});
console.log(result); // 15
//초깃값 1000 설정
const a = [1, 2, 3, 4, 5];
let result = a.reduce((acc, cur) => {
return acc + cur;
}, 1000);
console.log(result); // 1050
덧셈, 뺄셈 이외에도 아래와 같이 초깃값을 빈 배열로 주고 기존 배열을 가지고 순차적으로 값을 평가하여 빈 배열에 하나씩 넣어서 평가된 값을 담은 새로운 배열을 반환하는등의 역할을 할 수 있도록 코드를 작성하는것도 가능하다.
const a = [1, 2, 3, 4, 5];
let makeArr = a.reduce((acc, cur) => {
acc.push(cur % 2 === 0 ? "짝수" : "홀수");
return acc;
}, []);
console.log(makeArr); // ["홀수", "짝수", "홀수", "짝수", "홀수"]
위 예제와 같이 reduce를 활용하면 sort, every, some, find, findIndex, includes도 모두 reduce로 구현이 가능하다.
추가적으로 reduceRight 함수도 존재하는데 배열을 거꾸로 순회하며 동작한다.
댓글
댓글 쓰기