Flex Dizionario Ordinamento
-
13-09-2019 - |
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?
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;
}