【问题标题】:How to filter by space in filter as you type list?键入列表时如何按过滤器中的空格进行过滤?
【发布时间】:2017-03-31 17:56:41
【问题描述】:

我想通过输入空格来过滤列表(就像任何其他字符一样)。

目前的代码是:

var search = $.trim($(this).val().replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"));

如果我的列表中有vege tables,并且我输入了一个空格,或者字母e 和空格,或者空格和字母t,那么列表应该过滤以显示vege tables

我尝试将 \s 添加到代码中,但它没有像我希望的那样工作:

var search = $.trim($(this).val().replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|\s]/g, "\\$&"));

我错过了什么吗?

【问题讨论】:

    标签: javascript jquery filter spaces


    【解决方案1】:

    这是一个如何根据模式过滤字符串列表的示例。

    function filter(list, pattern) {
      return list.filter(function(item) {
        return pattern.test(item);
      });
    }
    const list = ['vege tables', 'man eater', 'word'];
    console.log('Current list: ', list);
    
    var pattern = ' e';
    console.log('Filter by: "' + pattern + '"');
    
    pattern = new RegExp(pattern, 'gi'); // convert the pattern to regex
    console.log(filter(list, pattern)); // get filtered list, ['man eater']
    

    【讨论】:

    • 感谢您的示例。如何在不影响现有过滤的情况下将其合并到现有代码中? jsfiddle.net/djj2c84t/5
    猜你喜欢
    • 2020-06-12
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 2015-02-26
    • 2019-01-28
    • 1970-01-01
    相关资源
    最近更新 更多