我在 flex 中有以下字典,并且我喜欢按值对其进行排序。找不到任何资源。
'1'=>2, '0' =>1, '3'=>4 ..
有任何想法吗 ?我怎样才能按价值排序?
我在 flex 中有以下字典,并且我喜欢按值对其进行排序。找不到任何资源。
'1'=>2, '0' =>1, '3'=>4 ..
有任何想法吗 ?我怎样才能按价值排序?
我四处寻找类似的解决方案,除了我需要对字典映射进行排序并返回与键值对相关的排序集合。在找不到已发布的解决方案后,我将以下方法放在一起。此方法将字典作为输入,创建一个维护关联的数组,然后使用 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;
}
可能不是最好的方法,但它有效:
var a:Array = new Array();
for each (var v:Number in dict)
{
a.push(v);
}
a.sort();