Home » AS3 »Avanzado »Básico »Noticias » Currently Reading:

Ordenar elementos de un Vector en Actionscript 3

enero 22, 2009 AS3, Avanzado, Básico, Noticias 2 Comments
Ordenar elementos de un Vector en Actionscript 3

En este ejemplo explicaré como ordenar elementos internos de un objeto de clase Vector en Actionscript 3. Para ordenar los elementos en realidad se realiza de igual manera que en un Array. Únicamente deberemos escribir una función que compare lo elementos según el orden que nos interese.

El valor que nos ha de devolver la función que realiza la comparación deberá ser:

  • 1: Si el primer valor es superior al segundo
  • -1: si el primer valor es inferior al segundo
  • 0: Si los valores son iguales

De manera que si creamos un Vector con 10 numero aleatorios:

  1. var vector:Vector.<uint> = new Vector.<uint>();
  2. for (var i:int = 0; i < 10; i++)
  3. {
  4.     vector.push(Math.random() * 100);
  5. }
  6. trace(vector); //25,19,69,95,57,78,59,86,2,97
  7. &#91;/as]
  8.  
  9. Si ahora lo quisiésemos ordenar de forma ascendente haríamos lo siguiente:
  10. &#91;as]function ascendente(x:uint, y:uint):int
  11. {
  12.     return (x >= y)?1 :-1;
  13. }
  14. vector.sort(ascendente);
  15. trace(vector); //2,19,25,57,59,69,78,86,95,97

Y lo mismo para ordenarlo de forma descendente:
function descendente(x:uint, y:uint):int
{
return (x < y)?1 :-1; } vector.sort(descendente); trace(vector); //97,95,86,78,69,59,57,25,19,2 [/as]

Compártelo:

Ordenar elementos de un Vector en Actionscript 3
Visto 10.973 veces

Currently there are "2 comments" on this Article:

  1. alex dice:

    En que momento pasó los parámetro x e y al llamar a la función?, explicar por favor

  2. admin dice:

    @alex:
    Esos parámetros no se los has de pasar en ningún momento. Son parámetros que se pasan por defecto al llamar la función.
    Tu únicamente has de colocar el nombre de la función dentro del método sort();

    vector.sort(ascendente);

    La función sort() genera un bucle en el que compara automáticamente todos los elementos del array de dos en dos. Osea X=elemento 1, Y=elemento 2.

    Lo que has de hacer es colocar en esa función la formula con la que decidas que un elemento ha de estar por delante del otro. En este caso, como el array son numeros se coloca antes el que es mayor:

    return (x>= y)?1 :-1;

    Dependiendo del resultado del return (1, o -1) colocará el elemento 1 delante o detrás del elemento 2. Y así sucesivamente.

Comment on this Article:








Twitter: zguillez

AdvertisementAdvertisementAdvertisementAdvertisement

Recibe las novedades por email

Post destacado

Obtener elementos de un listado de forma aleatoria sin que se repitan

30 may 2006

El método Array.splice() obtiene elementos de un Array eliminándolos de la matriz. Esto nos puede ser útil para obtener elementos (ya sean números o cadenas de texto) de forma aleatoria y sin que se repitan. Tenemos, por ejemplo, este listado de personas: var listado:Array = Array("Guillermo", "Lucas", "David", "Roger", "Bruno", "Iñaki", "Alex", "Carlos"); Para obtener un nombre de forma aleatoria utilizariamos la función Math.random(): aleatorio = Math.floor(Math.random()*(listado.length)); seleccion = listado[aleatorio] trace(seleccion) Si al obtener un nombre lo eliminamos del Array con Array.splice(): listado.splice(aleatorio, 1); La próxima vez que queramos obtener otro nombre del listado este no estará y así evitaremos …



Map

Ranking

Codigoactionscript.org: 4.65 sobre 5 (106 valoraciones)

twitter-widget.com