함수형코딩 315~326 28일차
요약
체이닝 : 체인처럼 엮어 복합적인 계산을 표현한다.
비즈니스 로직 : 우수고객을 뽑은 다음 -> 가장 비싼 구매를 가져온다.
function biggestPurchasesBestCustomer(customers){
var bestCustomers = filter(customers, isGoodCustomer);
var biggestPurchases = map(bestCustomers, getBiggestPurchases);
return biggestPurchases;
}
function isGoodCustomer(customer){
return customer.purchaeses.length >=3;
}
function getBiggestPurchases(customer){
return maxKey(customer.purchases, {total:0}, getPurchaseTotal)
}
function getPurchaseTotal(purchases){
return purchases.total
}
체이닝의 목적은 코드의 가독성을 높이고, 중복을 줄이며, 비즈니스 로직을 간결하고 명확하게 표현하는 것이다.
function biggestPurchasesBestCustomer(customers) {
return customers.filter(isGoodCustomer)
.map(getBiggestPurchases);
}
const isGoodCustomer = (customer) => customer.purchases.length >= 3;
const getBiggestPurchases = (customer) =>
Object.values(customer.purchases)
.reduce((max, purchase) => max.total < purchase.total ? purchase : max, { total: 0 });
발췌
메모