如何在JQuery中搜索数组,如SQL LIKE%value%语句

前端之家收集整理的这篇文章主要介绍了如何在JQuery中搜索数组,如SQL LIKE%value%语句前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个数组有一些值。如何使用jquery搜索与该数组匹配或接近的值的数组?
var a = ["foo","fool","cool","god"];

如果我想搜索oo,那么它应该返回foo,傻瓜和酷,因为这些字符串包含oo。

解决方法

要在数组中搜索,您必须使用jQuery.grep()或jQuery.map()。两者都使用回调函数返回带有过滤元素的新数组。

最快的实现(不区分大小写)在回调中使用indexOf和toUpperCase:

var search_term = 'oo'; // your search term as string
var search = search_term.toUpperCase();
var array = jQuery.grep(a,function(value) {
    return value.toUpperCase().indexOf(search) >= 0;
});

如果您不需要区分大小写的搜索,可以同时删除.toUpperCase()以加速进一步。

更灵活但更慢(对于小数组来说足够好)是使用正则表达式:

var search_term = "oo"; // search term
var search = new RegExp(search_term,"i");
var arr = jQuery.grep(a,function (value) {
    return search.test(value);
});

要么

var search_term = "oo"; // search term
var search = new RegExp(search_term,"i");
var arr = jQuery.map(a,function (value) {
    return value.match(search) ? value : null;
});

正则表达式允许您搜索比%值%更复杂。但是,如果您不需要它,因为它的速度要慢很多,请不要使用它。

你应该得到一个数组arr与匹配的元素

更新:更改示例以避免硬编码的搜索项(根据注释中的问题)并简化代码

UPDATE2:从正则表达式中删除了“g”标志

猜你在找的jQuery相关文章