Domanda

Ho il seguente dizionario in flessione, e mi piacerebbe ordinare per valore. Impossibile trovare qualsiasi risorsa.

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

Tutte le idee? Come posso risolvere questo valore?

È stato utile?

Soluzione

Probabilmente non è il modo migliore per farlo, ma funziona:

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

a.sort();

Altri suggerimenti

Ho cercato in giro per una soluzione simile, solo che avevo bisogno di ordinare la mappa dizionario e restituire una raccolta differenziata relative coppie di valori fondamentali. Dopo non essere riuscito a trovare una soluzione pubblicato ho messo insieme l'approccio seguito. Questo metodo prende un dizionario come input, crea una matrice mantenendo l'associazione quindi ordina l'array risultante utilizzando Array.sortOn () e restituisce i risultati ordinati indietro come un array. "Chiave" e campi "value" nella matrice nell'esempio seguente vengono utilizzati per chiarezza, ma qualsiasi nome di campo possono essere usati.

Questo esempio presuppone un oggetto stringa come una chiave e un oggetto numerico come valore, anche se ovviamente qualsiasi tipo di oggetto può essere utilizzato, e parametri di campo regolata.

L'approccio seguito potrebbe essere utilizzato anche per l'ordinamento con il tasto invece di valore utilizzando "chiave" come il campo di ordinamento per il metodo sortOn, e si potrebbe utilizzare diverse opzioni di ordinamento che l'ordinamento numerico decrescente ho usato qui ( AS3 sortOn () documentazione ) codice sotto è volutamente non generica di semplificare a scopo di esempio.

      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;
        }   
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top