我想组合两个或多个函数来生成一个新函数。
如何通过返回一个接受一个参数的函数来创建一个从左到右执行函数组合的函数?
例如:
const square = v => v * v;
const double = v => v * 2;
const addOne = v => v + 1;
const cal = myFunction(square, double, addOne);
cal(2) // 9; addOne(double(square(2)))
发布于 2018-07-25 09:11:54
您可以让myFunction
将传递的函数转换为带有rest参数的数组,然后返回一个使用reduce
迭代数组的函数,并将传递的参数作为初始值传递:
const myFunction = (...fns) => arg => fns.reduce(
(a, fn) => fn(a),
arg
);
const square = v => v * v;
const double = v => v * 2;
const addOne = v => v + 1;
const cal = myFunction(square, double, addOne);
console.log(cal(2)) // 9; addOne(double(square(2)))
https://stackoverflow.com/questions/51509522
复制相似问题