我正在寻找一个功能或一组功能来通过ramda执行工作。这是问: -
我有一个对象,我希望通过" pipe"函数,从该对象中提取少量参数,并将这些参数的值传递给函数。
例如
import {pipe} from 'ramda'
const obj = {
a: 1,
b: 2,
c: 3,
d: 4
}
const sum = (val1, val2) => val1 + val2
pipe(<extract a,b from obj> and pass it to sum function) ??
非常感谢任何形式的帮助。
感谢
答案 0 :(得分:3)
尝试使用pipe
的问题在于它(如compose
)只将一个参数传递给除第一个函数之外的任何函数。您可以使用apply
解决此问题,使您的函数接受单个数组中的参数,并使用props
提取该数组:
pipe(props(['a', 'b']), apply(sum))(obj); //=> 3
另一种方法是使用某种特定于Ramda的converge
函数:
converge(sum, [prop('a'), prop('b')])(obj) //=> 3
但也许更好的是更标准的lift
:
lift(sum)(prop('a'), prop('b'))(obj); //=> 3
您可以在 Ramda REPL 中看到这一切。