input: add(1)(2)(3)()
output:6
input:add(1,2,3)(4)()
output:10
我给出的答案:
const getSum = (total, num)=>{
return total + num;
}
const add = (...args) =>{
if(args.length>0){
const cacheResult = args.reduce(getSum)
return function curriedFn(...reset){
if(reset.length>0){
const result = reset.reduce(getSum)
return function(...params){
if(params.length >0){
return curriedFn(...reset.concat(params))
}
return result+cacheResult
}
}
return cacheResult
}
}
return 0
}
输出
console.log(add(1,2,3,4)(1)()) -------11
console.log(add(1,2,3,4)(1)(3,29)(5)(10)()) ----------58
这是我用到了高阶函数。
大佬们有没有更好的思路?可以下方评论,我们一起探讨。