ramda.js中的函数组合

时间:2016-05-04 08:57:33

标签: javascript ramda.js

鉴于以下内容:

var xs = [{a: 1}, {a: 2}, {a: 3}];
R.findIndex(R.propEq('a', 2))(xs); //=> 1
R.findIndex(R.propEq('a', 4))(xs); //=> -1

如何创建一个不立即绑定propEq的新函数。 我以为curry可能会这样做。

var myfn = R.findIndex(R.propEq);
myfn('a', '2')(xs); // => 1

我尝试过咖喱,但我没有那么正确。

var myfn = R.findIndex(R.curry(R.propEq)); // functional programming is rusty - this is not currect

1 个答案:

答案 0 :(得分:2)

嗯,我的第一个想法是,只是明确是最好的在这里:

const findByProp = curry((key, val, xs) => findIndex(propEq(key, val), xs));

const xs = [{a: 1, b: 10}, {a: 2, b: 20}, {a: 3, b: 30}];

findByProp('a', 1, xs);  //=> 0
findByProp('a', 2)(xs);  //=> 1
findByProp('b')(30)(xs); //=> 2

可能有某种方法可以使用useWithconverge或Sanctuary' S combinator使这一点免费,但它们可能最终不会像此

您可以在 Ramda REPL 上看到这一点。