使用 Underscore.js 进行不区分大小写的数组过滤

Using Underscore.js for case insensitive array filtering

如何使用 Underscore 过滤字符串数组进行全文搜索?

我的意思是匹配任意数量字符的过滤器,从字符串中的任何地方开始(不仅仅是从开头)。

该函数对于自动完成功能很有用。 例如,在全名数组中,查找中间名或姓氏。

首先创建一个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);
});