Вопрос

У меня есть следующий гибкий словарь, и я хотел бы отсортировать его по значению.Не удалось найти ни одного ресурса.

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

Есть идеи ?Как я могу отсортировать это по значению?

Это было полезно?

Решение

Вероятно, это не лучший способ сделать это, но он работает:

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

a.sort();

Другие советы

Я искал похожее решение, за исключением того, что мне нужно было отсортировать карту словаря и вернуть отсортированную коллекцию, связанную с парами «ключ-значение».Не сумев найти опубликованное решение, я разработал приведенный ниже подход.Этот метод принимает словарь в качестве входных данных, создает массив, поддерживающий ассоциацию, затем сортирует полученный массив с помощью 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;
        }   
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top