gpt4 book ai didi

javascript - lambda : whereAny?

转载 作者:行者123 更新时间:2023-12-02 08:02:25 24 4
gpt4 key购买 nike

我使用 Ramda 作为我的函数式编程帮助库来构建 React 应用。

我正在尝试构建自己的 whereAny。 Ramda 公开 where它会检查 每个 给它的 prop 是否满足相应的谓词。

我想构建一个接受键数组、对象和搜索词的函数,如果任何键(值是字符串)包含搜索词,它应该返回 true。如果不是,它应该返回 false

这是我目前的解决方法:

export const whereAny = keys => obj => searchTerm =>
R.any(
R.pipe(
R.toLower,
R.includes(R.toLower(searchTerm))
),
R.values(R.pick(keys, obj))
);
export const contactNameIncludesSearchValue = whereAny(['firstName', 'lastName']);

如您所见,我使用它来查看联系人的某些值是否包含搜索词(IRL 我使用的不仅仅是 firstNamelastName)。

我的问题是如何构建这样一个 whereAny 函数?我查看了 Ramda cookbook在 Google 上找不到 whereAny 的食谱。

我的解决方法的问题(除了它可能不是最佳的事实之外)是您不能像在 where 中那样指定不同的函数。所以理想情况下我的 api 应该是这样的:

const pred = searchValue => R.whereAny({
a: R.includes(searchValue),
b: R.equals(searchValue),
x: R.gt(R.__, 3),
y: R.lt(R.__, 3)
});

最佳答案

这是我会做的:

const fromPair = R.apply(R.objOf);

const whereFromPair = R.compose(R.where, fromPair);

const whereAny = R.compose(R.anyPass, R.map(whereFromPair), R.toPairs);

只是tested it并且有效。

关于javascript - lambda : whereAny?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55688667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com