2017-07-06 59 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