如何在输入列表时按过滤器中的空间进行过滤?
问题描述:
我想通过键入空格来筛选列表(就像任何其他字符一样)。如何在输入列表时按过滤器中的空间进行过滤?
当前的代码是:
var search = $.trim($(this).val().replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"));
如果我在我的名单vege tables
和我键入一个空格,或字母e
和空间,或者空间和信t
,列表应该过滤,以显示vege tables
。
我试图\ s添加到代码,但我所希望的是不工作:
var search = $.trim($(this).val().replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|\s]/g, "\\$&"));
我缺少的东西?
答
下面是如何基于模式过滤叮咬列表的示例。
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']
感谢您的示例。如何将其整合到现有代码中而不会对现有过滤造成不利影响? https://jsfiddle.net/djj2c84t/5/ –