Ordenar elementos de un Vector en Actionscript 3

Posted by admin | AS3, Avanzado, Básico, Noticias | Thursday 22 January 2009 11:54 am

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:

var vector:Vector.<uint> = new Vector.<uint>();
for (var i:int = 0; i <10; i++)
{
    vector.push(Math.random() * 100);
}
trace(vector); //25,19,69,95,57,78,59,86,2,97

Si ahora lo quisiésemos ordenar de forma ascendente haríamos lo siguiente:

function ascendente(x:uint, y:uint):int
{
    return (x>= y)?1 :-1;
}
vector.sort(ascendente);
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

Comparte:
  • Meneame
  • Twitter
  • Facebook
  • LinkedIn
  • Google Bookmarks
  • del.icio.us
  • Technorati
  • email
  • Print

Post relacinonados:

  1. Ordenar los elementos de un ArrayCollection en Flex
  2. Añadir funciones al teclado con Actionscript 3

2 Comments »

  1. Comment by alex — 24 January, 2009 @ 10:33 am

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

  2. Comment by admin — 24 January, 2009 @ 1:41 pm

    @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.

RSS feed for comments on this post. TrackBack URI

Leave a comment

Get Adobe Flash playerPlugin by wpburn.com wordpress themes