如何使用Underscore
过滤使用全文搜索的字符串数组?
我指的是一个匹配任意数量字符的过滤器,从字符串中的任何位置开始(不仅仅是从头开始)。
该功能对自动完成功能非常有用。 例如,在全名数组中,查找中间名或姓氏。
答案 0 :(得分:1)
首先创建一个like
下划线mixin
。此函数将使用正则表达式比较字符串(必须转义正则表达式特殊字符)。
_.mixin({
like: function(text, likeExpr) {
var regex = new RegExp(text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'), 'i');
return regex.test(likeExpr);
}
});
可以使用如下:
_.like('whatever', 'Something something WhaTEvEr something.'); // true
然后,您可以使用此功能过滤数组:
_.filter(array, function(text) {
return _.like('string to match', text);
});