본문 바로가기

카테고리 없음

타입스크립트 filter, map, reduce (함수형프로그래밍)

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