일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- promise
- 상태관리
- vue
- PDO
- javscript
- JavaScript
- package-lock.json
- Component
- vuex
- EM6
- 3d
- vue-template-compiler
- auth0
- PHP
- VR
- npx
- WebVR
- web
- Three.js
- vuetify
- JS
- version mismatch
- Node
- A-Frame
- aframe
- bootstrap
- array
- CI/CD
- WebXR
- AR
Archives
- Today
- Total
대가는 결과를 만든다
javascript reduce 원리 정리 본문
반응형
이전에 Array method에 정리한 적이 있지만 reduce에 원리에 대해 정리해본다.
reduce는 iterator에 항목들의 값을 하나로 축약 혹은 모아서 어떤 하나의 값으로 도출할 때 사용하는 메서드이다.
정의해보자면 다음과 같다.
// f: 항목마다 실행하여 합칠 값을 반환하는 함수
// acc: (초기값이래로 계속 축적되거나) 반환될 최종값
// iter: iterator 배열
const reduce = (f, acc, iter) => {
//acc를 따로 지정하지 않은 경우 두번째 파라미터가 iterator일 것이다.
//iter를 iterator로 정의해주고, acc를 iterator원소 첫번째로 초기화 한다.
if(!iter) {
iter = acc[Symbol.iterator]();
acc = iter.next().value;
}
//iterator를 순회하며 파라미터로 넘어온 함수를 실행하고, 최종 반환할 값으로 대입한다.
for(const a of iter){
acc= f(acc, a);
}
return acc;
}
위의 reduce함수를 통해 products에서 가격의 총합을 구한다면 아래와 같겠다.
const products=[
{name: '사탕', price: 200},
{name: '과자', price: 500},
{name: '도시락', price: 7100}
];
//products의 price 총합을 구할 때
reduce(
(total_price, product) => total_price+product.price,
0,
products)
);
Comments