【问题标题】:How to search an array in Jquery like SQL LIKE value% statement [duplicate]如何在 Jquery 中搜索数组,如 SQL LIKE value% 语句 [重复]
【发布时间】:2013-08-31 14:39:46
【问题描述】:

我有一个包含一些值的数组。如何使用 jQuery 在该数组中搜索匹配或接近的值?

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

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

我怎样才能做到这一点?

【问题讨论】:

  • ccool 的接近程度如何,但与acl 的接近程度不同?你想让这个词以c 开头吗?
  • 您可以使用正则表达式替换value% 使用/^value.*/

标签: javascript jquery regex


【解决方案1】:

试试这个:-

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

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:jQuery?从哪里来?
  • @Jon:jQuery 就在问题标题中。和问题主体。我已经更新了标签。
  • @Jon:- 更新了我的答案!!!
  • 哦,对了。只看了标签,不好意思。
  • @Jon:- 没问题。 !!!!
【解决方案2】:

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

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]);
    }
}

【讨论】:

    【解决方案3】:

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

    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"]
    

    【讨论】:

      【解决方案4】:

      您可以使用自 JavaScript 1.6 起可用的过滤器方法。它会给你一个包含过滤值的数组。如果您想匹配多个项目,非常方便。

      https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

      var a = ["foo","fool","cool","god","acl"];
      var startsWith = 'c';
      
      a.filter(function (value) {
          return value && value.length > 0 && value[0] == startsWith;
      });
      
      // yields: ["cool"]
      

      【讨论】:

        【解决方案5】:
        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/>");
            }
         }
        

        【讨论】:

          猜你喜欢
          • 2011-07-16
          • 2020-12-30
          • 1970-01-01
          • 2012-08-19
          • 2020-03-31
          • 2012-12-05
          • 1970-01-01
          • 2010-09-20
          • 2017-08-10
          相关资源
          最近更新 更多