我列出了IMDb的前100部电影。鉴于标题,我试图找到一种方法来模糊搜索"通过它。即,如果您输入"The Shawshank Redemption"
,结果将显示search
。如果没有输入任何内容(即export const selectMovies = createSelector(
getMovies,
getQueryParams,
(movies, { search = '' }) => R.filter(
R.propSatisfies(R.contains(search), 'title'),
movies
),
)
是空字符串),则不会过滤任何电影。
我的选择器如下:
getMovies
其中Movie[]
是一个返回getQueryParams
的函数,而search
返回一个具有字符串值"sha"
的对象。
现在,虽然我可以按标题大致过滤,但似乎有很多问题。例如,如果我输入"shaw"
,我会得到Shawshank Redemption。但是,如果我输入{{1}},它就不会得到萧条般的赎回。
是否有一种很好的方法来实现基于字符串的"模糊过滤器"与ramda?
答案 0 :(得分:1)
这是未经测试的,但我认为你可以轻松写下来:
const containsInsensitive = child => parent => contains(toLower(child), toLower(parent))
然后替换
R.contains(search)
与
containsInsensitive(search)
应该只需要它。