본문 바로가기

JAVASCRIPT

[자바스크립트] 배열 Reduce()

Reduce() 함수 

배열의 각 요소를 순회 callback함수의 실행값을 누적해 하나의 결과값을 반환

누산기가 있어서 배열의 각 요소에 함수를 실행하고, 누적된 값을 출력할 때 용이함 

arr.reduce(callback[,initialValue])

 

1) callback function

 - accumulator > ac : 콜백 함수의 반환값을 누적함 

 - currentValue > crr : 배열의 현재 요소 

 - index(Optional) > idx : 배열 현재 요소의 인덱스

 - array(Optional) : reduce()를 호출한 배열 

 > 콜백 함수의 반환값은 accumulator에 할당되고 순회 중 계속 누적되어서 최종적으로 하나의 값을 반환 

 

2) initalValue(Optional) 

최초 callback 함수 실행 시, accuulator 인수에 제공되는 값

초기값을 제공하지 않은 경우, 배열의 첫번째 요소를 사용하고 빈 배열에서 초기값이 없을 경우 에러 발생 

 

실행예제

1) initalValue = 0인 경우

const arr = [1,2,3,4,5];
const result = arr.reduce((acc, cur, idx) => {return acc += cur;}, 0);
console.log(result); 

// initialValue = 0이라 acc의 초기값은 0
// 배열의 첫번째 요소부터 acc에 자신의 값인 cur을 더해감 

reduce()를 실행하고 난 뒤 최종적으로 반환하는 값은 0+1+2+3+4+5 = 15

2) initalValue = 배열인 경우 

const numbers = [2, -5, -123, 59, -5480, 24, 0]; // array
const result = numbers.reduce((acc, cur, idx) => {
	if(cur <0){
    	// 처리할 현 요소가 음수인 경우
        acc[0]++;
     }
    else if(cur>0) {
    	// 처리할 요소가 양수인 경우
        acc[1]++;
     }
     return acc;
     }, [0,0]);
       // 음수와 양수의 개수를 세기 위해 [0,0]dmfh tjfwjd
     
     console.log(result); // [3,3]

 

참고자료

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

728x90