2012-10-15 48 views
-1

我使用下面的代碼進行排序在JavaScript數組數組排序:我如何基於兩個特性在JavaScript

array.sort(function(a,b){ 
      var score_a = $.fuzzyMatch(a['name'], user).score, 
       score_b = $.fuzzyMatch(b['name'], user).score; 

      return score_a < score_b ? -1 : score_a === score_b ? 0 : 1; 
     }); 

排序是採取每行的「名稱」屬性中的數組中並通過我的fuzzymatch函數運行它並返回分數,以便在數組頂部返回最相關的匹配。

不過,我想包括在排序的另一個屬性,在這種情況下,將a['folcode']b['folcode']

所以要sumarise,我該怎麼修改我的代碼,始終把含有['folcode'] == 4在頂部行,排序最好['name']匹配,則返回['folcode'] == 3行,也最好的名字匹配分類...等...

+0

請有人解釋downvote?我不是故意做錯任何事,而且一個解釋會幫助我學會如何在未來預防這些事情。謝謝。 – gordyr

回答

1

如果你想通過folcode主要進行排序,並通過name每個folcode,你就必須產生比較爲folcode就像您目前爲name所做的那樣,但僅在相等條件中返回名稱比較的值。

function(a,b) { 

    var code_a = a.folcode; 
    var code_b = b.folcode; 

    var score_a = $.fuzzyMatch(a.name, user).score; 
    var score_b = $.fuzzyMatch(b.name, user).score; 

    if(code_a === code_b) 
     return score_a < score_b ? -1 : score_a === score_b ? 0 : 1; 

    return code_a < code_b ? -1 : 1; 

} 
+0

絕對完美謝謝!由於解決方案非常簡單,我現在也覺得有些笨拙。無論如何,非常感謝。 :)我會盡快回答。 – gordyr