Flex dicionário Sorting
-
13-09-2019 - |
Pergunta
Eu tenho o seguinte dicionário em flex, e eu gostaria de classificá-lo por valor. Não foi possível encontrar qualquer recurso.
'1'=>2, '0' =>1, '3'=>4 ..
Todas as idéias? Como posso resolver isso por valor?
Solução
Provavelmente não é a melhor maneira de fazê-lo, mas ele funciona:
var a:Array = new Array();
for each (var v:Number in dict)
{
a.push(v);
}
a.sort();
Outras dicas
Eu procurei em torno de uma solução semelhante, exceto que eu precisava para resolver o mapa dicionário e retornar uma coleção ordenada relativas pares de valores-chave. Depois de não conseguir encontrar uma solução publicada Eu coloquei a abordagem abaixo. Este método utiliza um dicionário como entrada, cria uma matriz mantém a associação em seguida, ordena a matriz resultante utilizando Array.sortOn () e retorna os resultados classificados para trás como uma matriz. "Chave" e campos de "valor" na matriz no exemplo abaixo são usados ??para maior clareza, mas qualquer nome de campo poderia ser utilizado.
Este exemplo assume um objeto string como uma chave e um objeto numérico como um valor, embora, naturalmente, poderia ser usado qualquer tipo de objeto, e parâmetros de campo ajustado.
A abordagem a seguir também pode ser usado para a classificação por chave em vez de valor usando "chave" como o campo de classificação para o método sortOn, e você pode usar diferentes opções de classificação que a classificação numérica descendente que usei aqui ( AS3 sortOn () documentação ) Código abaixo é intencionalmente não-genérico para simplificá-lo para fins de exemplo.
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;
}