从输入创建排除过滤器

时间:2017-06-16 14:15:25

标签: javascript reactjs

我正在尝试制作一个识别搜索字符的搜索字符串。

如果文字包含exclude,我想像-一样使用它。

只有在-字符有space before itposition 0时才会排除。

搜索foo -bar它应该只存在foo,但bar不存在。

我在CodeSandbox上创建了一个示例:https://codesandbox.io/s/ZvAqXoOQ

代码应该像这样工作,但要确认何时应用every(e => !title

FOO

.filter(movie => {
  const title = movie.title.toLowerCase();
  return search.every(e => title.includes(e.toLowerCase()));

.filter(movie => {
  const title = movie.title.toLowerCase();
  return search.every(e => !title.includes(e.toLowerCase()));
});

1 个答案:

答案 0 :(得分:1)

根据学期的第一个字母选择条件。这样的事情。



const movies = ['foo', 'foo bar', 'baz', 'qux', 'foo baz'].map(title => ({title}))

const search = 'foo -bar'.split(' ')


console.log(
    movies.filter(
      ({title}) => search.every(term => term[0] === '-' ? !title.includes(term.substring(1)) : title.includes(term))
   )
)






const movies = ['foo', 'foo bar', 'baz', 'qux', 'foo baz'].map(title => ({title}))

const search = 'foo -'.split(' ')


console.log(
    movies.filter(
      ({title}) => search.every(term => {
        if(term === '-') return true
        
        if(term[0] === '-') return !title.includes(term.substring(1))
        
        return title.includes(term)
      
      })
   )
)