在 ramda 的过滤器上针对多个条件进行测试
Test against multiple conditions on a filter in ramda
我目前正在做以下事情:
(projects, query, domain) => compose(
filter<Project>(propEq('domain', domain)),
filter<Project>(propSatisfies(test(new RegExp(query)), 'name')),
)(projects)
但是,我想知道是否有一种方法可以通过组合测试来避免额外的迭代。我查看了 and
和 allPass
,但两者都不符合我的参数。理想情况下,我会有这样的东西:
filter<Project>(
all([
propEq('domain', domain),
propSatisfies(test(new RegExp(query)), 'name'),
]),
);
这在 ramda 中可行吗?
您可以使用 and
,尽管它仅用于两个参数。
我也想知道用普通 &&
s 连接谓词有什么问题,从最不可能的开始。
我想这应该可以满足您的需求
filter<Project>(allPass([
propEq('domain', domain),
propSatisfies(test(new RegExp(query)), 'name')
]))
你试过了吗?
我目前正在做以下事情:
(projects, query, domain) => compose(
filter<Project>(propEq('domain', domain)),
filter<Project>(propSatisfies(test(new RegExp(query)), 'name')),
)(projects)
但是,我想知道是否有一种方法可以通过组合测试来避免额外的迭代。我查看了 and
和 allPass
,但两者都不符合我的参数。理想情况下,我会有这样的东西:
filter<Project>(
all([
propEq('domain', domain),
propSatisfies(test(new RegExp(query)), 'name'),
]),
);
这在 ramda 中可行吗?
您可以使用 and
,尽管它仅用于两个参数。
我也想知道用普通 &&
s 连接谓词有什么问题,从最不可能的开始。
我想这应该可以满足您的需求
filter<Project>(allPass([
propEq('domain', domain),
propSatisfies(test(new RegExp(query)), 'name')
]))
你试过了吗?