Comunidad de diseño web y desarrollo en internet online

Ranking de mayor a menor

Citar            
MensajeEscrito el 22 Jun 2009 07:10 am
Hola a todos.
Estoy programando una aplicación en la que, desde botones, aumento el valor de seis variables (grupo1, grupo2, ..., grupo6) hasta un punto final en el que debo mostrar la clasificación, de mayor a menor, de esas variables. ¿Alguien sabría cómo realizar esa clasificación y que apareciera con los nombres de cada variable y no con su valor?
Muchas gracias.
Un saludo.

Por nimues2009

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Jun 2009 01:31 pm
Hola!

Si entiendo bien lo que deseas hacer en primer lugar tus variables deberían ser objetos. Estos objetos tendrían dos valores: el nombre y el valor. Después de actualizar los valores de las variables debes crear un Array que se ordenaría y mostraría el Array de forma descendente:

Código ActionScript :

var grupo1:Object= {nombre:"nombre_del_grupo1", valor:10} // Así declaras las variable grupo1, grupo2...
var grupo2:Object= {nombre:"nombre_del_grupo2", valor:20} // Al incializarlas puedes asignarles un valor de 0
var grupo3:Object= {nombre:"nombre_del_grupo3", valor:18} // Para incrementarlas simplemente: grupoX.valor++ o grupoX.valor=numero;
// grupo4:Object...grupo6

var valores:Array = [grupo1,grupo2,grupo3]; // Añadimos los objetos al nuevo array valores
valores.sortOn("valor",Array.DESCENDING) // Ordenamos el Array de forma descendiente basado en los valores de los objetos(grupos)

for( var i=0; i<valores.length; i++){
trace(valores[i].nombre); // nos mostrará los nombres de las variables, de la mas alta a la mas
}


Espero te sirva.
Saludos!

Por kiwiki098

15 de clabLevel



 

safari
Citar            
MensajeEscrito el 22 Jun 2009 09:07 pm
Muchas gracias por tu aportación, kiwiki098.
Tu programación funciona perfectamente y es mucho más concisa del lío en el que me había metido (una pesadilla de if... else que no funcionaba).
Un saludo fuerte.

Por nimues2009

2 de clabLevel



 

msie
Citar            
MensajeEscrito el 23 Jun 2009 10:36 am
De nada, me alegro que te sirva!
Yo también he aprendido un par de cosas que no había usado nunca antes (como el sortOn()) y al hacer pruebas para darte esta solución me he dado cuenta de la de cosas que se pueden hacer con los objetos.

Un saludo.

Por kiwiki098

15 de clabLevel



 

safari
Citar            
MensajeEscrito el 24 Jun 2009 09:40 am
Hola de nuevo.
Es curioso, pero al añadir un elemento más (grupo4), el programa deja de ordenarlos correctamente. ¿A alguien se le ocurre por qué puede suceder esto?
Muchas gracias.

Código :

var grupo1:Object= {nombre:"nombre_del_grupo1", valor:10} // Así declaras las variable grupo1, grupo2... 
var grupo2:Object= {nombre:"nombre_del_grupo2", valor:20} // Al incializarlas puedes asignarles un valor de 0 
var grupo3:Object= {nombre:"nombre_del_grupo3", valor:18} // Para incrementarlas simplemente: grupoX.valor++ o grupoX.valor=numero;
var grupo4:Object= {nombre:"nombre_del_grupo4", valor:100}
 
var valores:Array = [grupo1,grupo2,grupo3,grupo4]; // Añadimos los objetos al nuevo array valores 
valores.sortOn("valor",Array.DESCENDING) // Ordenamos el Array de forma descendiente basado en los valores de los objetos(grupos) 
 
for( var i=0; i<valores.length; i++){ 
trace(valores[i].nombre); // nos mostrará los nombres de las variables, de la mas alta a la mas 
} 

Por nimues2009

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Jun 2009 01:02 pm
Hola!

Perdona, había olvidado algo bastante importante. Si el programa no funciona es por los valores. Actualmente se ordena de manera descendiente a nivel de caracteres, por eso 100 va antes que 18. Hay que especificar en la función sortOn que los valores son numéricos de la siguiente manera:

Código ActionScript :

valores.sortOn("valor",Array.NUMERIC | Array.DESCENDING)


Saludos

Por kiwiki098

15 de clabLevel



 

safari
Citar            
MensajeEscrito el 26 Jun 2009 12:30 pm
Muchas gracias.
Me estaba volviendo loco intentando averiguar por qué no ordenaba correctamente.
Un saludo.
Alfredo

Por nimues2009

2 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.