Comunidad de diseño web y desarrollo en internet online

[FLASH MX 2004] Como ordenar un array (lista)?

Citar            
MensajeEscrito el 07 Mar 2005 08:57 pm
Lo que quiero decir es que actualmente uso la funcion sort(nombre_funcion);
para ordenar una lista (array), pero el problema es ordeno segun unos campos
numericos que tienen valores desde el 0 hasta el 1000 y flash me los ordena
pero agrupando los 1, 100, 128, etc; 2, 200, 222, etc; 5, 500, 510, etc y
los quiero 1, 2, 3, 20, 100, 222, 500, etc, o sea todos consecutivos asi
sean numeros de uno dos tres o cuatro digitos.

No entiendo el porque de esto y me gustaria que alguien sabe como lograr lo
que quiero por favor me indique como,.. muchas gracias...

Siddin Vargas

Este es el codigo que llevo hecho:

var contraseñas = new Array();

contraseñas.push({name: "mom", nickname: ""});
contraseñas.push({name: "ana", nickname: ""});
contraseñas.push({name: "jay", nickname: ""});
contraseñas.push({name: "anne", nickname: ""});
contraseñas.push({name: "regina", nickname: ""});

contraseñas[0].nickname = "mom(1)";
contraseñas[1].nickname = "ana(30)";
contraseñas[2].nickname = "jay(150)";
contraseñas[3].nickname = "anne";
contraseñas[4].nickname = "regina(500)";

for(var i=0; i<5; i++){
trace(contraseñas[i].name);
}

function order(a,b){
var a1 = a.nickname.lastIndexOf("(");
var a2 = a.nickname.slice((a1+1), (a[0].nickname.length - 1));

var b1 = b.nickname.lastIndexOf("(");
var b2 = b.nickname.slice((b1+1), (b[0].nickname.length - 1));

if (a2 < b2){
return -1;
}
else if (a2 > b2){
return 1;
}
else {
return 0;
}
}
trace ("Sorted:");
contraseñas.sort(order, 16);
for(var i=0; i<5; i++){
trace(contraseñas[i].nickname);
}

Por siddin

9 de clabLevel



 

Venezuela

msie
Citar            
MensajeEscrito el 08 Mar 2005 08:40 am
Usa el método de la burbuja, es un algoritmo de ordenación. Yo hice este ejemplo hace ya un tiempo.

Copy&Paste:

Código :

mi_array = new Array(10, 14, 2, 3, 15, 7, 6, 11, 1, 4, 9, 5, 8, 13, 12);
largo = mi_array.length;

function ordenarArray(){
   for (i=0; i<largo; i++){
      for (j=largo; j>0; j--){
         if (mi_array[j-1] > mi_array[j]){
            temp = mi_array[j-1];
            mi_array[j-1] = mi_array[j];
            mi_array[j] = temp;
         }
      }
   }
   trace(mi_array);
}

ordenarArray();


Deu!! ^^

Por Elecash

Claber

8126 de clabLevel

37 tutoriales
19 articulos
13 ejemplos

  Bastard Operators From Hell Desarrollador de GAIA Premio_Secretos Héroes

BarnaCity

clabbrowser
Citar            
MensajeEscrito el 08 Mar 2005 03:35 pm
a veces no hay que ser tan flojos/cerrados y hay que usar google

Código :

function sortByNumber(a, b) {
  return (a > b);
}
ages = [13, 52, 33, 2, 25, 14, 3, 77, 8];
ages.sort(sortByNumber);
trace(ages);

Por fael

BOFH

2443 de clabLevel

3 tutoriales
2 articulos

 

firefox
Citar            
MensajeEscrito el 10 Mar 2005 06:51 pm
Para fael...
Si es comigo lo que mandastes el mensaje anterior "a veces no hay que ser tan flojos/cerrados y hay que usar google" entonces te responde yo sere flojo pero tu entonces no tienes la capacidad de leer y entender. Amigo eso yo desde hace ya que lo sabia es un ejemplo bien sencillo y aprendi a usarlo solo. Si lees bien el problema es otro que simplemente usar el metodo sort, ademas no estoy ordenando directamente sino por una extension, pero tranquilo que de todas formas ya resolvi y bastante bien que lo hice.

Por siddin

9 de clabLevel



 

Venezuela

msie
Citar            
MensajeEscrito el 11 Mar 2005 08:44 am
siddin (Y fael)

Les recuerdo los puntos 2, 5 y 9 de las reglas del foro
http://www.cristalab.com/foros/viewtopic.php?t=1260

Por otro lado; seria muy bueno que nos contaras como lo resolviste siddin; para que alguien que encuentre este mensaje en el futuro pueda llegar a una solución gracias a ti

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

clabbofh
Citar            
MensajeEscrito el 11 Mar 2005 08:56 am
Eso, eso, que con el método de la burbuja que te pase yo se podía solucionar, solo había que adaptarlo un poquito ;)

Código :

mi_array = new Array({num:10}, {num:14}, {num:2}, {num:3}, {num:15}, {num:7}, {num:6}, {num:11}, {num:1}, {num:4}, {num:9}, {num:5}, {num:8}, {num:13}, {num:12});
largo = 15;

function ordenarArray(){
   for (i=0; i<largo; i++){
      for (j=largo; j>0; j--){
         if (mi_array[j-1].num > mi_array[j].num){
            temp = mi_array[j-1].num;
            mi_array[j-1].num = mi_array[j].num;
            mi_array[j].num = temp;
         }
      }
   }
   for (n=0; n<largo; n++){
     trace(mi_array[n].num);
   }
}

ordenarArray();


¡¡No seais malos!!

Deu!! ^^

Por Elecash

Claber

8126 de clabLevel

37 tutoriales
19 articulos
13 ejemplos

  Bastard Operators From Hell Desarrollador de GAIA Premio_Secretos Héroes

BarnaCity

clabbrowser
Citar            
MensajeEscrito el 11 Mar 2005 08:18 pm
He aqui como lo hice:

var contraseñas = new Array();
contraseñas.push({name:"mom", nickname:""});
contraseñas.push({name:"ana", nickname:""});
contraseñas.push({name:"jay", nickname:""});
contraseñas.push({name:"anne", nickname:""});
contraseñas.push({name:"regina", nickname:""});
contraseñas[0].nickname = "mom(10)";
contraseñas[1].nickname = "ana(20)";
contraseñas[2].nickname = "jay(150)";
contraseñas[3].nickname = "anne";
contraseñas[4].nickname = "regina(500)";
trace("Unsorted");
for (var i = 0; i<5; i++) {
trace(contraseñas[i].name);
}
function order(a, b) {
var a1 = a.nickname.lastIndexOf("(");
var R1 = Number(a.nickname.slice((a1+1), (a.nickname.length-1)));

var b2 = b.nickname.lastIndexOf("(");
var R2 = Number (b.nickname.slice((b2+1), (b.nickname.length-1)));
if (isNaN(R1)){
R1 = 1001;
} else if(isNaN(R2)){
R2 = 1001;
}

trace("R1= " + R1 + " R2= " + R2);
if (R1 < R2) {
return -1;
} else if (R1 > R2) {
return 1;
} else {
return 0;
}
}
trace("Sorted:");
contraseñas.sort(order, 16);
contraseñas.reverse();
for (var i = 0; i<5; i++) {
trace(contraseñas[i].nickname);
}

Nota: fijense que ordeno segun el score de las personas, o sea, por lo que esta dentro de los parentesis.

Siddin Vargas

Por siddin

9 de clabLevel



 

Venezuela

msie
Citar            
MensajeEscrito el 11 Mar 2005 08:29 pm
Por otra parte no se porque me dirigen directamente los puntos 2, 5 y 9 de las reglas del foro como si yo fui el culpable ahora o el que se dirigio directamente asi una persona diciendole flojo.

Gracias...
P.D. He mantenido en todo momento la cordialidad.

Por siddin

9 de clabLevel



 

Venezuela

msie
Citar            
MensajeEscrito el 11 Mar 2005 08:34 pm

siddin escribió:

Por otra parte no se porque me dirigen directamente los puntos 2, 5 y 9 de las reglas del foro como si yo fui el culpable ahora o el que se dirigio directamente asi una persona diciendole flojo.
Gracias...
P.D. He mantenido en todo momento la cordialidad.


U_U no se buscan culpables sino quienes intervienen
amor y paz ^^

saludos :D
PD:

siddin escribió:

...te responde yo sere flojo pero tu entonces no tienes la capacidad de leer y entender....

Por flasher

Invitado



 

firefox
Citar            
MensajeEscrito el 11 Mar 2005 08:45 pm

flasher escribió:

siddin escribió:

Por otra parte no se porque me dirigen directamente los puntos 2, 5 y 9 de las reglas del foro como si yo fui el culpable ahora o el que se dirigio directamente asi una persona diciendole flojo.
Gracias...
P.D. He mantenido en todo momento la cordialidad.


U_U no se buscan culpables sino quienes intervienen
amor y paz ^^

saludos :D
PD:

siddin escribió:

...te responde yo sere flojo pero tu entonces no tienes la capacidad de leer y entender....
Obvia mi respuesta mas me enviaron el mensaje principalmente a mi. siddin(y fael). Yo respondi mas no inicie. Pero solo dejo eso claro, no es mi intencion discutir o buscar victimas. Voto por el amor y paz jajaje

Gracias...

Por siddin

9 de clabLevel



 

Venezuela

msie

 

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