brunch

You can make anything
by writing

C.S.Lewis

by zwoo Dec 11. 2021

[JS TIL] 배열의 reduce 함수

배열을 축약시키는 함수 리듀스 

Array.prototype.reduce()


자바스크립트의 배열의 내장함수 중에는 reduce() 라는 함수가 있다. 배열의 요소들을 누적 계산하여 최종적으로 하나의 값으로 축약하는 함수이다. 


reduce 함수의 첫번째 인자로는 배열요소를 누적 계산할 함수가 필요하고, 이는 반드시 필요한 인자이다. 두번째 인자로는 누적 계산식의 초기값이 들어가는데, 두번째 인자가 없으면 reduce 함수는 초기값을 0으로 생각하고 배열요소들을 가지고만 계산한다.



누적 계산


누적계산함수로 사용하는 reducer 는, 매개변수 두개를 받아서 계산한 값을 리턴하는 형태를 취해야 한다. 


const array1 = [4, 5, 6]


이런 배열이 있을 때, array1.reduce() 를 실행하면 초기값이 있는 경우에는 이 초기값을 0번째 인덱스로 하는 가상의 배열이 만들어진다. 그리고 그 뒤쪽으로 array1 배열의 요소들이 차례로 들어온다. 인자로 전달받은 reducer 에 따라 0번째 인덱스와 1번째 인덱스가 하나의 값으로 계산되고 가상배열의 길이가 1 줄어든다. (초기값이 없다면 1번째 인덱스부터 계산이 시작된다.) 그 다음 요소들과 차례로 한번씩 계산되어 최종적으로 하나의 값이 도출되면 이 값이 array1.reduce() 의 결과값으로 리턴된다. 





[].reduce()  


빈배열에 대해서 reduce 함수를 실행한다면, 초기값이 있는 경우 초기값 이후로 누적계산된 수가 없으므로 결과값은 초기값 그대로이다. 만약 초기값이 없이 빈배열에 대해 reduce 함수를 실행하면 타입에러가 발생한다.  




Photo by Crissy Jarvis on Unsplash




TMI 

자바스크립트의 내장객체 Math 는 수학적인 상수와 메서드를 가진 내장객체이다. 그런데 Math.add(), Math.minus() 가 만들어져있을 법도 한데 없다는 게 아무리 생각해도 의아하다. 

왜 안만들었지? 




매거진의 이전글 Drawer Navigator에 삽입한 이미지 변경하기
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari