Я искал подобное решение, за исключением того, что мне нужно было отсортировать карту словаря и вернуть отсортированную коллекцию, относящуюся к парам ключ-значение. Не найдя опубликованного решения, я собрал подход, изложенный ниже. Этот метод принимает словарь в качестве входных данных, создает массив, поддерживающий ассоциацию, затем сортирует результирующий массив с помощью array.sortOn () и возвращает отсортированные результаты обратно в виде массива. Поля «ключ» и «значение» в массиве в приведенном ниже примере используются для ясности, но можно использовать любое имя поля.
В этом примере предполагается использование строкового объекта в качестве ключа и числового объекта в качестве значения, хотя, конечно, можно использовать любой тип объекта и настраивать параметры поля.
Приведенный ниже подход также можно использовать для сортировки по ключу вместо значения, используя «ключ» в качестве поля сортировки для метода 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;
}