type FooD = {
name:string,
price:number,
quantity:number,
selected:boolean
};
const foods:FooD[] = [
{
name:"피카츄돈가츠",
price:10000,
quantity:1,
selected:true
},
{
name:"아싸츄",
price:4000,
quantity:2,
selected:true
}
]
const sum = (foods:FooD[]) => foods.filter(fod=>fod.selected).map(fod=>fod.quantity).reduce((a,b) => a+b,0);
const calc = (foods:FooD[]) => foods.filter(fod => fod.selected).map(fod=>fod.quantity*fod.price).reduce((a,b)=> a+b,0)
console.log(`음식 수량: ${sum(foods)}개`)
console.log(`음식 합계: ${calc(foods)}원`)
filter로 선택된항목을 고르고 map함수로는 음식수량과, 음식값계산을 위한 수량과 가격을 곱한다. 최종적으로 reduce함수로는 누적값을 계산
if-else로 복잡하게 음식 수량,합계 계산대신 간단하게 filter,map,reduce로 구현하였다 마치 자바의 스트림을 사용하는것 같아 함수형 프로그래밍같다
참고한 책입니다
https://www.yes24.com/product/goods/145367977
멀티패러다임 프로그래밍 - 예스24
좋은 코드엔 프로그래밍 패러다임의 경계가 없다!복잡한 문제를 해결하기 위해 객체지향, 함수형, 명령형을 자유롭게 넘나들며 설계하고 구현하는 법 견고한 코드, 유연한 문제 해결을 위한 멀
www.yes24.com