reduce
함수는 배열을 기반으로 값 하나를 도출할 때 사용된다
인자로 다음을 받을 수 있다
accumulator
: 이전 함수 호출의 결과. initial
은 함수 최초 호출 시 사용되는 초깃값을 나타냄(옵션)item
: 현재 배열 요소let value = arr.reduce(function(accumulator, item) {
// ...
}, [initial]);
예제)
let arr = [1, 2, 3, 4, 5];
let result = arr.reduce((sum, current) => sum + current, 0);
alert(result); // 15
다음 호출 시 sum=1 , current=2가 되고 계속해서 배열의 요소를 돌며 반복한다
초기값인 initial은 생략이 가능하지만 배열이 비어있는 경우 에러가 발생할 수 있기 때문에 초기값을 항상 명시해 주는 것을 권장한다
var flattened = [[0, 1], [2, 3], [4, 5]].reduce(
(accumulator, currentValue) => accumulator.concat(currentValue),
[]
);
// 펼친 결과: [0, 1, 2, 3, 4, 5]
accumulator.concat()이 실행되면 accumulator=[0,1]이 할당
다음 호출시 계속해서 반복된다
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]