Pregunta

Tengo el siguiente diccionario en flexión, y d como para solucionar el problema por valor. No se pudo encontrar ningún recurso.

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

¿Alguna idea? ¿Cómo puedo resolver esto por el valor?

¿Fue útil?

Solución

Probablemente no es la mejor manera de hacerlo, pero funciona:

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

a.sort();

Otros consejos

Busqué una solución similar, excepto que necesitaba para ordenar el mapa diccionario y devolver una colección ordenada en relación pares de valores clave. Después de no encontrar una solución publicado que arme el enfoque de abajo. Este método toma un diccionario como entrada, se crea una matriz se mantiene la asociación a continuación, ordena la matriz resultante usando Array.sortOn () y devuelve los resultados ordenados de nuevo como una matriz. "Clave" y los campos "valor" de la matriz en el ejemplo a continuación se utilizan para mayor claridad, pero cualquier nombre de campo se podrían utilizar.

Este ejemplo asume un objeto de cadena como una llave y un objeto numérico como valor, aunque, por supuesto cualquier tipo de objeto podría ser utilizado, y los parámetros de campo ajustado.

El enfoque de abajo también se podría utilizar para la clasificación por la llave en lugar de valor mediante el uso de "clave" como el campo de clasificación para el método sortOn, y se podía utilizar diferentes opciones de ordenación que el orden numérico descendente que se utiliza aquí ( AS3 sortOn () documentación ) a continuación es intencionalmente no genérico para simplificarlo para fines de ejemplo.

      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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top