Javascript 如果其中一个参数包含多个值,如何使用currying函数?
我有一个高阶函数,虽然第一种情况下Javascript 如果其中一个参数包含多个值,如何使用currying函数?,javascript,Javascript,我有一个高阶函数,虽然第一种情况下乘法(4,5)的效果与预期一样,但是否可以传递多个参数,如乘法(2)(4,5)。在这种情况下,答案是8,但是可以这样创建一个curried函数,从而得到40作为结果吗 函数乘法{ 返回函数(b){ 返回s*b; } } 控制台日志(乘(4)(5)) log(multiply(2)(4,5))您可以使用并收集两个函数上的所有参数,并返回缩减后的结果 函数乘法(…a){ 返回函数(…b){ 返回[…a,…b].reduce((a,b)=>a*b); }; } c
乘法(4,5)
的效果与预期一样,但是否可以传递多个参数,如乘法(2)(4,5)
。在这种情况下,答案是8,但是可以这样创建一个curried函数,从而得到40作为结果吗
函数乘法{
返回函数(b){
返回s*b;
}
}
控制台日志(乘(4)(5))
log(multiply(2)(4,5))
您可以使用并收集两个函数上的所有参数,并返回缩减后的结果
函数乘法(…a){
返回函数(…b){
返回[…a,…b].reduce((a,b)=>a*b);
};
}
console.log(乘(4)(5));//20
console.log(乘(2)(4,5));//40
console.log(乘(3,2)(4,5));//120
如果您有一个或多个b
参数,可以这样做:
函数乘法{
//将包含所有b参数的乘法
var结果=1;
//…b将返回传递的数组参数
返回函数(…b){
//循环遍历每个数组并更新结果
对于(变量i=0;i log(乘法(2)(4,5))
您可以使用参数执行类似操作:
function multiply(s) {
return function () {
return Array.from(arguments).reduce(function(accumulator, currentValue) {
return accumulator * currentValue;
}, s);
}
}
函数乘法{
返回函数(b){
for(输入参数)s*=参数[key];
返回s;
}
}
控制台日志(乘(4)(5))
log(multiply(2)(4,5))
您可以使用两个嵌套的multiply
调用或重写函数。另外,您的第一个案例是multiply(4)(5)
,而不是multiply(4,5)
类似于?@NickParsonsgreat@GerardoFurtado thanks@brk不用担心,检查Nina的答案,以获得在第一个和第二个函数中传递参数的选项。为什么最好?另外,你能给你的代码添加一些解释吗?