2009-12-04 171 views
4

我有flex中的以下字典,我想按值排序。找不到任何資源。Flex字典排序

'1'=>2, '0' =>1, '3'=>4 .. 

任何想法?我怎樣才能按價值分類?

+0

您是否嘗試按鍵或值進行排序? – 2009-12-05 01:02:09

+0

按價值,但它會很高興知道這兩個。 – DarthVader 2009-12-05 02:21:36

回答

3

可能不是最好的方式做到這一點,但它的工作原理:

var a:Array = new Array(); 
for each (var v:Number in dict) 
{ 
    a.push(v); 
} 

a.sort(); 
+0

夠好。謝謝。 – DarthVader 2009-12-07 23:53:09

12

我搜索周圍類似的解決方案,但我需要排序的字典映射並返回與鍵值對的有序集合。在未能找到已發佈的解決方案後,我將下面的方法放在一起。該方法將字典作爲輸入,創建一個維護關聯的數組,然後使用array.sortOn()對結果數組進行排序,並將排序結果作爲數組返回。在下面的例子中,數組中的「key」和「value」字段用於清晰起見,但可以使用任何字段名稱。

這個例子假設一個字符串對象作爲一個鍵和一個數字對象作爲一個值,儘管當然可以使用任何對象類型,並調整字段參數。

下面的方法也可以用於鍵排序,而不是使用「key」作爲sortOn方法的排序字段,也可以使用不同的排序選項,而不是我在此使用的降序數字排序(AS3 SortOn() documentation)出於示例目的,下面的代碼有意不是通用的。

 public static function sortDictionaryByValue(d:Dictionary):Array 
     { 
      var a:Array = new Array(); 
      for (var dictionaryKey:Object in d) 
      { 
      a.push({key:dictionaryKey,value:d[dictionaryKey]}); 
      } 
      a.sortOn("value",[Array.NUMERIC|Array.DESCENDING]); 
      return a; 
     }