假设我有数量未定的函数 f,每个函数都需要一个参数并返回一个结果。我应该如何编写一个函数“execute”,将第一个参数作为数字,将所有其他参数作为函数应用于前面每个函数的结果?
这是我的猜测:
let plus1 = d => d += 1;
let plus2 = d => d += 2;
let write = d => document.write(d);
let execute = function(n,...functions){
functions.forEach((d)=>d(n));
}
execute(4,plus1,plus2,write);
我期待 7 ((4+1)+2)。
感谢您的帮助!
最佳答案
您可以使用Array#reduce
,它在使用具有给定值的函数时返回结果。
let plus1 = d => d + 1,
plus2 = d => d + 2,
write = d => console.log(d),
execute = (n, ...fn) => fn.reduce((n, f) => f(n), n);
execute(4, plus1, plus2, write);
尤里·塔拉类科建议的较短版本
let plus1 = d => d + 1,
plus2 = d => d + 2,
write = d => console.log(d),
execute = (...args) => args.reduce((v, f) => f(v));
execute(4, plus1, plus2, write);
关于javascript - 如何在 JS 中创建重用返回结果的可变高阶函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44153432/