关于javascript:如何在Jquery中搜索数组,如SQL LIKE值%语句

How to search an array in Jquery like SQL LIKE value% statement

本问题已经有最佳答案,请猛点这里访问。

我有一个带有一些值的数组。如何使用jquery搜索与之匹配或接近的值?

1
var a = ["foo","fool","cool","god","acl"];

如果我想搜索c,那么它应该返回cool,而不是acl

我怎么能做到?


您可以使用Javascript 1.6之后提供的过滤方法。它将返回一个带有过滤值的数组。如果您想匹配多个项目,非常方便。

https://developer.mozilla.org/en-us/docs/web/javascript/reference/global_objects/array/filter

1
2
3
4
5
6
7
8
var a = ["foo","fool","cool","god","acl"];
var startsWith = 'c';

a.filter(function (value) {
    return value && value.length > 0 && value[0] == startsWith;
});

// yields: ["cool"]

一个简单的方法是检查以"c"开头的单词并迭代数组。

1
2
3
4
5
6
7
8
var ar = ['acl','cool','cat']
for(var i = 0 ; i<ar.length ; i++){
   console.log(ar[i].match(/^c/))
}
//Prints:
//null
//["c", index: 0, input:"cool"]
//["c", index: 0, input:"cat"]


使用substring检查数组中的每个字符串是否以要搜索的字符串开头:

1
2
3
4
5
6
7
8
var strings = ["foo","cool","acl" ];
var needle ="c";

for (var i = 0; i < strings.length; ++i) {
    if (strings[i].substring(0, needle.length) === needle) {
        alert("found:" + strings[i]);
    }
}

试试这个:

1
2
3
4
5
arr = jQuery.grep(a, function (value) {
    search = /c/gi;
    if(value.match(search)) return true;
        return false;
    });

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function find(arr) {
    var result = [];

    for (var i in arr) {
        if (arr[i].match(/c/)) {
            result.push(arr[i]);
        }
    }

    return result;
}

window.onload = function() {
    console.log(find(["foo","fool","cool","god","acl"]));
};


1
2
3
4
5
6
7
8
var a = ["foo","fool","cool","god","acl"];
var Character="f";
for(i=0;i<a.length;i++){
    if(a[i].indexOf(Character)!=-1){

        document.write(a[i]+"<br/>");
    }
 }