作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 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 我使用的不仅仅是 firstName
和 lastName
)。
我的问题是如何构建这样一个 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/
我使用 Ramda 作为我的函数式编程帮助库来构建 React 应用。 我正在尝试构建自己的 whereAny。 Ramda 公开 where它会检查 每个 给它的 prop 是否满足相应的谓词。 我
我是一名优秀的程序员,十分优秀!