2013-06-26 40 views
0

我有一個viewmodel,我想按兩個單獨的字段(ala在SQL中的一個組)按字母順序依次排序,然後由第二個字段(也按字母順序排序) 。現在我只按第二個字段排序。我在打字稿一種功能,它被設置這樣的:如何在ViewModel的多個元素上排序 - 敲除

private sortTable(item): any { 
     item.sort(function (left, right) { 
      return left.nm == right.nm? 0 : (left.nm < right.nm ? -1 : 1) 
     }); 

     return item; 
    } 

,我也想排序(第一場)的字段被稱爲FNM在JavaScript對象。誰能幫我嗎?

謝謝!

回答

2
private sortTable(item): any { 
    item.sort(function (left, right) { 

     if (left.FirstSortField == right.FirstSortField) 
      return left.SecondSortField== right.SecondSortField? 0 : (left.SecondSortField< right.SecondSortField? -1 : 1) 
     else 
      return left.FirstSortField == right.FirstSortField ? 0 : (left.FirstSortField < right.FirstSortField ? -1 : 1) 

    return item; 
} 

請注意,我沒有測試這個。

+0

完美:

在你第一次表達替換0!謝謝! – noname

+0

非常有幫助。你不需要重新檢查else塊中的FirstSortField。你也可以把這個語句放在一行中,使用?語法 - 由開發人員決定哪些代碼庫更具可讀性。謝謝! – stvn

0

想一想,如果名字相同,名字隻影響排序。

(left.fNm == right.fNm ? 0 : (left.fNm < right.fNm ? -1 : 1))