대가는 결과를 만든다

javascript reduce 원리 정리 본문

카테고리 없음

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)
);
Comments