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?

Foi útil?

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;
        }   
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top