php、java与js 数组的模糊匹配查询代码实现

php、java与js 数组的模糊匹配查询代码实现


我们知道数据库中模糊匹配用like,或者全文检索,那么有时间数据量比较小,不想建个数据表,怎么办,可以用数组

那么数组如何实现模糊匹配查询的

先看php的

$list = array();        // 匹配后的结果
$arr = array("abcd","abef","efgh");
$search_str = "ab";        // 搜索的字符串
foreach($arr as $key=>$val ){
    if (strstr( $val , $search_str ) !== false ){
      array_push($list, $val);
    }
}
$list 即为模糊匹配后的结果:

$list = array("abcd","abef");

那么js中如何实现呢,其实大同小异

var list = ["中国", "美国", "英国 "];

        var len = list.length;
        var arr = [];
        var reg = new RegExp("关键字或字符串");
        for(var i=0;i<len;i++){
          
            if(list[i].match(reg)){
                arr.push(list[i]);
                console.log(arr);
            }
        }

或者

var list = ["中国", "美国", "英国 "];
        var arr = [];
        for(var i=0;i<list.length;i++){
            //如果字符串中不包含目标字符会返回-1
            if(list[i].indexOf("关键字或字符串")>=0){
                arr.push(list[i]);
            }
        }

es6中还可以这样(注意,现代浏览器支持)

var arr = [
    {id: "1", en: "Afghanistan", cn: "阿富汗", code: "93"},
    {id: "2", en: "Iraq", cn: "伊拉克", code: "964"},        
    {id: "3", en: "Qatar", cn: "卡塔尔", code: "974"}
];
function query(arr, q) {
  return arr.filter(v => Object.values(v).some(v => new RegExp(q + '').test(v))
  )
}


那么java中呢,差不多都一样

public List search(String name,List list){
   List results = new ArrayList();
   Pattern pattern = Pattern.compile(name);
   for(int i=0; i < list.size(); i++){
      Matcher matcher = pattern.matcher(((Employee)list.get(i)).getName());
      if(matcher.find()){
         results.add(list.get(i));
      }
   }
   return results;
}

今天就到着了,数据量大了不适合了

{{collectdata}}

网友评论0