javascript 对象的额外一些属性并将它们传递给函数
Extra some properties from a javascript object and pass those to a function
我正在寻找一个函数或一组函数来通过 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) ??
非常感谢任何形式的帮助。
谢谢
为此尝试使用 pipe
的问题在于它(如 compose
)仅将单个参数传递给除第一个调用函数之外的任何对象。您可以使用 apply
, making your function accept a the parameters in a single array, and using 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.
中看到这一切
我正在寻找一个函数或一组函数来通过 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) ??
非常感谢任何形式的帮助。
谢谢
为此尝试使用 pipe
的问题在于它(如 compose
)仅将单个参数传递给除第一个调用函数之外的任何对象。您可以使用 apply
, making your function accept a the parameters in a single array, and using 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.
中看到这一切