具有动态功能的Ramda管

时间:2019-03-12 05:22:07

标签: javascript ramda.js

var arr = [functionA(), functionB(), functionC()]
var data = { /** some data */ }

如何动态地从arr列表中添加功能并将其添加到ramda管道中。

预期代码:

const newFn = pipe(functionA, functionB, functionC)

newFn(data)

2 个答案:

答案 0 :(得分:2)

您可以使用apply

const buildPipe = apply(pipe);
const add3 = buildPipe([inc, inc, inc]);
const add4 = buildPipe([inc, inc, inc, inc]);

console.log(add3(1));
console.log(add4(2));
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.min.js"></script>
<script>const {apply, pipe, inc} = R;</script>

答案 1 :(得分:0)

只需使用 es6扩展运算符,它将把数组项扩展为管道函数的参数。

此外,除非函数返回所需的函数,否则不要在数组中调用它们:)

EHLO