카테고리 없음
javascript reduce 원리 정리
yunzema
2020. 3. 31. 23:39
반응형
이전에 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)
);