2020-01-13
描述
接受一个聚合函数和一个使用列表保存的分支函数作为参数,每一个分支函数都使用相同的参数进行运行,并将运行结果展开作为聚合函数的参数,最终返回该聚合函数运行的结果。
提示
- 使用
Array.prototype.map()
和Function.prototype.apply()
让每一个函数都使用传入的参数进行运行 - 使用扩展运算符(
...
)将所有其他的函数结果做为参数传递给coverger
代码
const converge = (converger, fns) => (...args) => converger(...fns.map(fn => fn.apply(null, args)));
示例
求数组中所有数字的平均数:
const average = converge((a, b) => a / b, [
arr => arr.reduce((a, v) => a + v, 0),
arr => arr.length
]);
average([1, 2, 3, 4, 5, 6, 7]); // 4