expenses내의 amount를 모두 더해야하는데, for문말고 Array의 reduce()
메서드를 이용해보자.
리듀스함수는 JS말고도 자바 스트림등에서도 자주 보이는 메서드이다..
리듀스는 보통 네개의 인자를 갖는다.
<p className="main-total">
총 지출 :
<span>
{expenses.reduce((acc, curr) => {
return (acc += curr.amount);
}, 0)}
원
</span>
</p>
위에서 누산기는
(add, curr) => { return (acc += curr.amount);}
이다. 현재값은 0
임.
나는 사실… curr가 어떻게 amount필드를 갖고 있는건지 이해가 안된다. curr는 그냥 인자인거 아닌가?
리듀스 함수 자체가 이렇게 설계되어있는걸까? 즉… 리듀스 함수는 그 내부의 콜백까지 설계되어있는걸까? 그래서 리듀스의 콜백의 두번째 인자는 항상 리듀스를 호출한 배열의 각 원소들을 가리키게 되는걸까? 이게 아니면 설명이 안된다.