问题描述
我正在学习使用javascript进行函数式编程。我了解到需要2个参数来减少。累加器和实际值,如果我们不提供初始值,则使用第一个参数。但我无法理解purchaseItem
函数在下面的代码中如何工作。谁能解释一下。
const user = {
name: 'Lachi',active: true,cart: [],purchases: []
}
let history = []
const compose = (f,g) => (...args) => f(g(...args))
console.log(purchaseItem(
emptyCart,buyItem,applyTaxToItems,addItemToCart
)(user,{name: 'laptop',price: 200}))
function purchaseItem(...fns) {
console.log(fns)
return fns.reduce(compose)
}
function addItemToCart (user,item) {
history.push(user)
const updatedCart = user.cart.concat(item)
return Object.assign({},user,{ cart: updatedCart })
}
function applyTaxToItems(user) {
history.push(user)
const {cart} = user
const taxRate = 1.3
const updatedCart = cart.map(item => {
return {
name: item.name,price: item.price * taxRate
}
})
return Object.assign({},{ cart: updatedCart })
}
function buyItem(user) {
history.push(user)
return Object.assign({},{ purchases: user.cart })
}
function emptyCart(user) {
history.push(user)
return Object.assign({},{cart: []})
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)