在Ramda的过滤器上针对多种条件进行测试

时间:2018-07-24 18:09:49

标签: javascript functional-programming ramda.js

我目前正在执行以下操作:

(projects, query, domain) => compose(
  filter<Project>(propEq('domain', domain)),
  filter<Project>(propSatisfies(test(new RegExp(query)), 'name')),
)(projects)

但是,我想知道是否有一种方法可以通过组合测试来避免额外的迭代。我调查了andallPass,但都没有真正符合我的参数。理想情况下,我会有这样的东西:

filter<Project>(
  all([
    propEq('domain', domain),
    propSatisfies(test(new RegExp(query)), 'name'),
  ]),
);

在ramda中这可能吗?

2 个答案:

答案 0 :(得分:5)

我想这应该满足您的需求

filter<Project>(allPass([
  propEq('domain', domain),
  propSatisfies(test(new RegExp(query)), 'name')
]))

您尝试过吗?

答案 1 :(得分:0)

您可以使用and,尽管它仅用于两个参数。

我还想知道,从最小的概率开始,将谓词与纯&&连在一起有什么问题。