Foros del Web » Creando para Internet » Flash y Actionscript »

Ordenar arrays en base a otro

Estas en el tema de Ordenar arrays en base a otro en el foro de Flash y Actionscript en Foros del Web. Hola a todos estoy buscando ordenar varios arrays en base a uno que fue ordenado, para explicar mejor dejo este ejemplo: Código: var nombres:Array=new Array("pedro","juan","maria"); ...
  #1 (permalink)  
Antiguo 10/12/2010, 08:00
 
Fecha de Ingreso: septiembre-2008
Mensajes: 55
Antigüedad: 15 años, 7 meses
Puntos: 0
Ordenar arrays en base a otro

Hola a todos estoy buscando ordenar varios arrays en base a uno que fue ordenado, para explicar mejor dejo este ejemplo:

Código:
var nombres:Array=new Array("pedro","juan","maria");
var edades:Array=new Array("41","32","20");
var nombres2:Array=new Array();

nombres2=nombres;
nombres2.sort();

trace(nombres2);
nombres es el array desordenado y nombres2 es el ordenado, lo que busco hacer es que edades se ordene tambien en base a como se ordeno nombres2, ya que cada dato del array edades correspondia a un nombre especifico del array nombres en base a la posicion que tenia, o sea originalmente es:

pedro = 41
juan = 32
maria = 20

al ordenar los nombres como edades se mantienen ubicadas de igual forma las edades no corresponden al nombre:

juan=41
maria=32
pedro=20

la idea es que se orden las edades en base al nuevo orden de nombres

juan=32
maria=20
pedro=41

Espero que alguien me pueda ayudar, esto lo estoy buscando hacer para AS 2.0 y sin hacer uso de arrays bidimensionales.

saludos y gracias.
  #2 (permalink)  
Antiguo 10/12/2010, 08:54
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 3 meses
Puntos: 193
Respuesta: Ordenar arrays en base a otro

Ummm creo que puede quedar de 2 formas.

Lo mejor y mas sencillo es solucionar el problema desde otra perspectiva, en lugar de usar arrays separados usemos un array de Objectos, en un objeto puedes almacenas cualquier tipo de información ej
Código actionscript:
Ver original
  1. var objecto:Object = {tag:"valor", tag2:"valor 2"};
  2. trace( objecto.tag ) // imprime valor =)

Teniendo esto como base lo que queda hacer crear tus objetos dentro de un array y despues ordenar ese array por un "TAG" en especial eso lo hacemos con
Código actionscript:
Ver original
  1. array.sortOn();

Queda algo así tu ejemplo

Código actionscript:
Ver original
  1. var persons:Array = [
  2.                      {name:"Juan", age:41, sex:"male", city:"Mexico"},
  3.                      {name:"Zara", age:21, sex:"female", city:"Aguascalientes"},
  4.                      {name:"Roberto", age:29, sex:"male", city:"Guadalajara"},
  5.                      {name:"Antonio", age:29, sex:"male", city:"Zacatecas"},
  6.                      {name:"Antonio", age:31, sex:"male", city:"Chiapas"},
  7.                                              
  8.                      ];
  9. trace("================ANTES==================")
  10.  
  11. showMeAll(persons);
  12.  
  13. var newPersons:Array = persons.sortOn(["name"]);
  14.  
  15. trace("===============DESPUES=================")
  16.  
  17. showMeAll(newPersons);
  18.  
  19. function showMeAll(src:Array)
  20. {
  21.     for each ( var item:Object in src  )
  22.     {
  23.         trace(item.name+ " " + item.age + " " + item.sex + " " + item.city)
  24.     }
  25. }

Output
Código actionscript:
Ver original
  1. ================ANTES==================
  2. Juan 41 male Mexico
  3. Zara 21 female Aguascalientes
  4. Roberto 29 male Guadalajara
  5. Antonio 29 male Zacatecas
  6. Antonio 31 male Chiapas
  7. ===============DESPUES=================
  8. Antonio 29 male Zacatecas
  9. Antonio 31 male Chiapas
  10. Juan 41 male Mexico
  11. Roberto 29 male Guadalajara
  12. Zara 21 female Aguascalientes

Saludos!!
  #3 (permalink)  
Antiguo 10/12/2010, 09:13
 
Fecha de Ingreso: septiembre-2008
Mensajes: 55
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Ordenar arrays en base a otro

TMeister, gracias por la ayuda pero eso seria para AS 3.0 como comente antes estoy buscando hacerlo para AS 2.0.

Etiquetas: arrays
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:05.