4

我在 flex 中有以下字典,并且我喜欢按值对其进行排序。找不到任何资源。

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

有任何想法吗 ?我怎样才能按价值排序?

4

2 回答 2

13

我四处寻找类似的解决方案,除了我需要对字典映射进行排序并返回与键值对相关的排序集合。在找不到已发布的解决方案后,我将以下方法放在一起。此方法将字典作为输入,创建一个维护关联的数组,然后使用 array.sortOn() 对结果数组进行排序,并将排序后的结果作为数组返回。下面示例中的数组中的“键”和“值”字段用于清楚起见,但可以使用任何字段名称。

这个例子假设一个字符串对象作为键,一个数字对象作为值,当然可以使用任何对象类型,并调整字段参数。

通过使用“key”作为 sortOn 方法的排序字段,下面的方法也可以用于按键而不是值排序,并且您可以使用与我在此处使用的降序数字排序不同的排序选项(AS3 SortOn() 文档)下面的代码是故意非通用的,以便出于示例目的对其进行简化。

      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;
        }   
于 2010-02-13T11:28:32.447 回答
3

可能不是最好的方法,但它有效:

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

a.sort();
于 2009-12-05T19:20:06.053 回答