Ramda:过滤"模糊搜索"

时间:2018-04-10 21:24:40

标签: javascript ramda.js

我列出了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?

1 个答案:

答案 0 :(得分:1)

这是未经测试的,但我认为你可以轻松写下来:

const containsInsensitive = child => parent => contains(toLower(child), toLower(parent))

然后替换

R.contains(search)

containsInsensitive(search)

应该只需要它。