일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- stack
- ReactDOM
- javascirpt
- pseudocode
- reduce
- JavaScript
- github
- 깃헙
- 수도코드
- 자료구조
- falsy
- 함수선언식
- 객체지향프로그래밍
- 스택
- Til
- render
- props
- 페어프로그래밍
- 함수표현식
- 제곱함수
- CLONE
- 각자리수
- State
- while
- react
- math.pow
- jsx
- pair
- ES6
- SUPER
- Today
- Total
강백호같은개발자
배열 매서드 reduce 함수 javaScript 본문
배열 매서드인 reduce 함수에 대해서 알아봅시다.
.reduce(함수(누적값, 현재값, 현재인덱스, 원본배열), 초기값)
reduce는 배열에 대해서 실행할 수 있는 함수인데,
내부에 '리듀서'(reducer)함수를 가지고 실행하며,
배열 인덱스 요소들을 리듀서 함수를 실행하므로써
단 하나의 결과만을 반환하는 함수입니다.
리듀스함수의 핵심은 단연 '리듀서'reducer 함수입니다.
리듀서 함수는 네개의 인자를 가질 수 있습니다.
순서대로
1. 누적값(acc;accumulator)
2. 현재값(cur;currentValue)
3. 현재인덱스(idx)
4. 원본배열(arr)
물론 보통 사용되는 인자는 주로 누적값(acc)와 현재값(cur)이 가장 많이 사용되고,
저는 그래서 인자 이름도 acc 와 cur로 자주 사용하고 있습니다. 헷갈리지 않도록요.
리듀스 함수는 이렇게 사용합니다.
let initialValue = 0
let values = [33, 55, 11, 44, 22]
function sum(acc, cur){
return acc + cur;
}
let total = values.reduce(sum, initialValue);
그러니까 리듀서 함수를 선언하는 부분과
배열에 '리듀스'를 적용하는 부분이 존재합니다.
근데 이것을 한번에 표현할 수도 있습니다.
이렇게요.
let initialValue = 0
let values = [33, 55, 11, 44, 22]
let total = values.reduce(function sum(acc, cur){
return acc + cur;
}, initialValue);
뭐 둘은 같은 의미이니 편한 것을 택할 수 있겠습니다.
여기서 중요한 것은,
리듀서함수 옆에 적혀있는 초기값이 있다면, 이 값이 acc로 들어가고,
초기값이 주어지지 않았다면, 배열의 첫 인덱스 요소(element)가
acc 로 들어간다는 것입니다.
acc로 들어간 값은 그 다음 배열의 요소가 cur로 들어오게 되어
acc + cur 이 실행됩니다.
그리고 그 결과가 다시 acc로 할당되며,
배열의 모든 요소가 리듀서 함수를 통과할 때 까지 cur로 들어와서 계속되다가
종료됩니다.
그래서 결과가 하나의 값으로만 나오는 것입니다.
해당 매커니즘을 잘 이해할 수 있는 참고 사이트를 공유합니다.
JavaScript에서
배열을 다뤄야할 때,
혹은 숫자를 자리수로 계산해야하는 수학 문제에 있어서,
숫자를 문자열로 만든 다음 split('')으로 한자리 숫자의 배열요소로 다룰 때,
리듀서 함수를 사용하면 반복된 연산의 하나의 결과 값을 도출해낼 수 있습니다.
배열의 각 요소들에 어떤 계산을 반복해서 적용해야할 때,
리듀스 reduce 매서드를 기억해내자!
개발 뉴비의 블로그입니다. 수정 보완할 것이 있다면 부담없이 댓글 남겨주세요 :)
배열 매서드 reduce 함수 javaScript
'- 배움은 개발을 거들뿐(TIL)' 카테고리의 다른 글
JavaScript 에서의 객체 (Object) 이해 (0) | 2020.06.07 |
---|---|
수도코드(pseudocode) 작성하는 방법 (1) | 2020.06.07 |
JavaScript 에서의 falsy 값 (0) | 2020.06.04 |
Math.pow JavaScript 제곱 함수 (0) | 2020.06.04 |
while loop javascript (0) | 2020.06.01 |