Question

Je le dictionnaire suivant flex, et je tiens à le trier par valeur. Impossible de trouver aucune ressource.

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

Toutes les idées? Comment puis-je régler ce problème en valeur?

Était-ce utile?

La solution

Probablement pas la meilleure façon de le faire, mais cela fonctionne:

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

a.sort();

Autres conseils

Je cherchai autour d'une solution similaire, sauf que je devais trier la carte dictionnaire et retourner une collection triée paires de valeurs relatives clés. Après avoir échoué à trouver une solution publiée, je mets ensemble l'approche ci-dessous. Cette méthode prend un dictionnaire comme entrée, crée un tableau en maintenant l'association trie ensuite la matrice résultante en utilisant Array.sortOn () et renvoie les résultats triés en arrière dans un tableau. « Clé » et champs « valeur » du tableau dans l'exemple ci-dessous sont utilisés pour plus de clarté, mais un nom de domaine pourrait être utilisé.

Cet exemple suppose un objet de chaîne comme une clé et un objet numérique comme une valeur, même si bien sûr tout type d'objet peut être utilisé et ajusté les paramètres sur le terrain.

L'approche ci-dessous pourrait également être utilisé pour le tri par clé au lieu de la valeur en utilisant « clé » comme le champ de tri pour la méthode sortOn, et vous pouvez utiliser différentes options de tri que le tri décroissant numérique je ici ( AS3 sortOn () documentation ) code ci-dessous est intentionnellement non générique pour simplifier à titre d'exemple.

      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;
        }   
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top