如何在jquery中改进我的搜索方法?
我使用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
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想继续提供帮助,那么就把讨论带到聊天室。