Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在jquery中改进我的搜索方法?_Jquery_String_Search_Match - Fatal编程技术网

如何在jquery中改进我的搜索方法?

如何在jquery中改进我的搜索方法?,jquery,string,search,match,Jquery,String,Search,Match,我使用jquery编写了非常简单的搜索方法,下面是我的方法: function filter () { array = [] // Search For items on Searchbox var name = $(this).find('.info').text().toLowerCase() items = name.match( $('#Search').val().toLowerCase() ) // Select Valid items

我使用jquery编写了非常简单的搜索方法,下面是我的方法:

function filter () {
    array = []
    // Search For items on Searchbox
    var name = $(this).find('.info').text().toLowerCase()
    items = name.match( $('#Search').val().toLowerCase() )

    // Select Valid items
    if ( items != null ){
        array.push(items)
        $(this).addClass('Result');
        return items;
    }
}
这种方法效果很好,但问题在于结果

如果我们有这个文本

Enjoy your company
享受你的快乐是真实的,但你的享受是虚假的

我怎样才能使我的方法更好地解决这个问题,并且如果单词的顺序不同,我能抓住它

我想如果用户搜索享受你的z结果应该是假的

可以考虑方法来达到这个结果。 即使单词的顺序不同,您也可以围绕以下更新的代码进行捕获

     array = [];
$('#Search').keyup(function (e) {                        
     $("body").find(".info").each(function(index){
                var matchedIndexes = [];
                var name = $(this).text().toLowerCase().trim();
                var splitedArray = name.split(" "); // to split by space
                var splitedSearch =$('#Search').val().toLowerCase().trim().split(" ");   

for(var i=0;i<splitedArray.length;i++){
    if(i == 0)
    var matchedLength = 0;

   for(var j=0;j<splitedSearch.length;j++){
      if (splitedArray[i].indexOf(splitedSearch[j]) == 0){ 
          if(splitedArray.length >= splitedSearch.length && matchedIndexes.indexOf(i) == -1){
                         matchedIndexes.push(i);//To avoid search the same index even after match
                         array.push(splitedArray[i])
                         $(this).addClass('match');
                         matchedLength ++;
          }
      }
    }

    if(matchedLength < splitedSearch.length)
       $(this).removeClass('match');        
   }


            });

});// keyup
更新:1

更新:2

更新:3


我希望这将对您有所帮助。

听起来您希望在空格上拆分,然后测试名称是否包含所有这些单词,作为单独的单词。也许在空格上拆分搜索和名称。但是我应该怎么做呢?非常感谢您的帮助,一切都是正确的,这里只有一个问题,那就是性能问题,在您的方法中,如果我搜索享受,它将搜索所有有享受词的字段,但如果我再次搜索享受c,它将在所有字段中搜索享受c,我希望它搜索c字符只在那些领域有享受,而不是在所有其他领域,你能为我这样做吗?非常感谢您为我所做的一切,我希望我能为您做点什么:@Parsoua您一直回到Manirajs并在评论中添加一个问题是不公平的。如果您有其他问题,则扩展讨论不适用于评论,而适用于聊天。如果Manirajs想继续提供帮助,那么就把讨论带到聊天室。