2017-07-06 39 views
-1

我用下面的筛选funtion,滤镜功能相关值

$.each(contacts,function(i,contact){     

      var keyword = (contact.dept+';'+contact.name+';'+contact.location+';'+contact.extn).toLowerCase();     

      if(keyword.indexOf(newSearchValue) != -1){ 
       newdata.push(contact);     
      }     
     }); 

其正常工作。它默认按升序排列。但我需要的正是我想要搜索应该在上面和下面的其余部分。我怎样才能得到这个结果?

+0

你能有一些尝试发布您的代码或者你有什么想法吗? –

+0

可能我误解了你的问题(请参阅下面的答案)?你的意思是你的结果应该按照某种“匹配质量”进行排序? I. e。那些搜索结果*匹配最好*应首先列出?但是,“匹配最好”是什么意思呢?由于您不使用正则表达式,因此它不能是匹配的长度。 – cars10m

+0

如果我搜索一个“xxx”,但我得到“yzxxx”,我知道它已经得到了相同的字母表,但我需要我试图搜索应该在上面和下面的其余部分。 – Renu

回答

0

这是你如何设置newdata阵列的一个问题:

var newdata=['newSearchValue']; 
// then put your code snippet here 

这样,你的结果阵列开始与搜索表达式本身的顶部以下,实际的搜索结果。

2

创建了newdata的数组后。你需要排序数组这样

$.each(contacts, function(i, contact) { 
    var keyword = (contact.dept + ';' + contact.name + ';' + contact.location + ';' + contact.extn).toLowerCase(); 

    if (keyword.indexOf(newSearchValue) != -1) { 
    newdata.push(contact); 
    } 
}); 

newdata =newdata.sort(function(a, b){ 
return b.indexOf(newSearchValue) - a.indexOf(newSearchValue); 
}) 

更新

var newdata = [{ "id": "86", "name": "fgdf", "password": "", "dept": "test", "extn": "534534", "mobile_no": "97767867677", "location": "xxxx", "email": "[email protected]", "type": "0", "dept_id": "1", 
 
    "created_on": "2017-06-30 11:19:03", "loc_id": "3"}, { "id": "85", 
 
    "name": "new", "password": "", "dept": "test1", "extn": "565", 
 
    "mobile_no": "4357347853945", "location": "yyyyy", "email": "[email protected]", "type": "0", "dept_id": "3", "created_on": "2017-06-30 11:19:03", "loc_id": "3"}] 
 
    
 
var newSearchValue = 'h';//change the as your wish 
 

 
newdata = newdata.sort(function(a, b) { 
 
    var a1 = (a.dept + ';' + a.name + ';' + a.location + ';' + a.extn).toLowerCase() 
 
     var b1 = (b.dept + ';' + b.name + ';' + b.location + ';' + a.extn).toLowerCase() 
 
    return b1.indexOf(newSearchValue) - a1.indexOf(newSearchValue); 
 
}) 
 

 
console.log(newdata)

+1

+1添加一个工作示例!尽管这是OP应该首先完成的事情。您的示例与上面介绍的实际解决方案不同,因为您正在对代码段中的* whole * contacts数组进行排序,并且仅在第一个提到的解决方案中对* results *进行了排序。 – cars10m

+0

感谢您的回复@prasad。但它不工作bcz新数据是json对象。它抛出一个indexOf不是函数错误。 – Renu

+0

您可以显示对象或工作示例代码 – prasanth