Array.sortOn()

Disponibilidad

Flash Player 6; se han añadido funciones adicionales en Flash Player 7.

Sintaxis

my_array.sortOn("fieldName" )
my_array.sortOn("fieldName", option | option |... )
my_array.sortOn( [ "fieldName" , "fieldName" , ... ] )
my_array.sortOn( [ "fieldName" , "fieldName" , ... ] , option | option |... )

Nota: si se muestran corchetes ([]), debe incluirlos en el código; es decir, los corchetes no representan parámetros opcionales.

Parámetros

fieldName Cadena que identifica un campo (de un elemento de la matriz) que debe utilizarse como valor de clasificación.

option Uno o más números o cadenas, separados por el operador | (OR en modo bit), que cambian el comportamiento o la clasificación respecto al predeterminado. Los siguientes valores de option son aceptables:

Cada una de estas opciones se explica con mayor detalle en "Descripción", a continuación.

Valor devuelto

El valor devuelto depende de si se pasa algún parámetro:

Descripción

Método; ordena los elementos de una matriz según uno o más campos de la matriz. Si pasa varios parámetros fieldName, el primer campo representa el campo de clasificación principal, el segundo representa el siguiente campo de clasificación, y así sucesivamente. Flash ordena siguiendo valores ASCII (Unicode). Si alguno de los elementos que se están ordenando no contiene el campo especificado en el parámetro fieldName, se interpreta el campo como undefined, y los elementos se sitúan de manera consecutiva en la matriz sin ningún orden en particular.

De forma predeterminada, Array.sortOn() funciona de esta manera:

Puede utilizar las etiquetas option para omitir estos valores predeterminados. Los siguientes ejemplos utilizan diferentes etiquetas option a efectos ilustrativos. Si quiere ordenar una matriz sencilla (por ejemplo, una matriz con un sólo campo) o si desea especificar un orden de clasificación no admitido por el parámetro options, utilice Array.sort().

Para pasar varias etiquetas en formato numérico, sepárelas con el operador | (OR en modo bit) o sume los valores de los indicadores. El código siguiente muestra tres maneras diferentes de especificar una clasificación numérica descendente:

my_Array.sortOn(nombreCampo, 2 | 16);
my_Array.sortOn(nombreCampo, 18);
my_Array.sortOn(nombreCampo, Array.DESCENDING | Array.NUMERIC);

Las sugerencias para el código (véase Utilización de las sugerencias para el código) están habilitadas si utiliza la forma de cadena de la etiqueta (por ejemplo, DESCENDING) en lugar de la forma numérica (2).

Considere la siguiente matriz:

var my_array:Array = new Array();
my_array.push({contraseña: "Bob", edad:29});
my_array.push({contraseña: "abcd", edad:3});
my_array.push({contraseña: "barb", edad:35});
my_array.push({contraseña: "catchy", edad:4});

Una clasificación predeterminada del campo de contraseña daría como resultado:

my_array.sortOn("contraseña")
// Bob
// abcd
// barb
// catchy

Una clasificación que no distinga entre mayúsculas y minúsculas del campo de contraseña daría como resultado:

my_array.sortOn("contraseña", Array.CASEINSENSITIVE)
// abcd
// barb
// Bob
// catchy

Una clasificación que no distinga entre mayúsculas y minúsculas, en orden descendente, del campo de contraseña daría como resultado:

my_array.sortOn("contraseña", 1|2)
// catchy
// Bob
// barb
// abcd

Una clasificación predeterminada del campo de edad daría como resultado:

my_array.sortOn("edad")
// 29
// 3
// 35
// 4

Una clasificación numérica del campo de edad daría como resultado:

my_array.sortOn("edad", 16)
// 3
// 4
// 29
// 35

Una clasificación numérica, en orden descendente, del campo de edad daría como resultado:

my_array.sortOn("edad", 18)
// 35
// 29
// 4
// 3

Llevar a cabo una clasificación cambia los elementos de la matriz de la siguiente manera:

// Antes de clasificar
// my_array[0].edad = 29;
// my_array[1].edad = 3;
// my_array[2].edad = 35;
// my_array[3].edad = 4;

// Después de una clasificación que no pase 8 como valor de option
my_array.sortOn("edad", Array.NUMERIC);
// my_array[0].edad = 3;
// my_array[1].edad = 4;
// my_array[2].edad = 29;
// my_array[3].edad = 35;

Llevar a cabo una clasificación que devuelva una matriz de orden no cambia los elementos de la matriz:

// Antes de clasificar
// my_array[0].edad = 29;
// my_array[1].edad = 3;
// my_array[2].edad = 35;
// my_array[3].edad = 4;

// Después de una clasificación que devuelve una matriz que contiene valores de índice
// Observe que no se ha modificado la matriz original.
// Puede utilizar la matriz devuelta para mostrar información ordenada
// sin modificar la matriz original.
var indexArray:Array = my_array.sortOn("edad", Array.RETURNINDEXEDARRAY);
// my_array[0].edad = 29;
// my_array[1].edad = 3;
// my_array[2].edad = 35;
// my_array[3].edad = 4;

Ejemplo

Este ejemplo crea una nueva matriz y la ordena según los campos name y city: la primera clasificación utiliza name como primer valor de clasificación y city como el segundo. La primera clasificación utiliza city como primer valor de clasificación y name como el segundo.

var rec_array = new Array();
rec_array.push( { name: "john", city: "omaha", zip: 68144 } );
rec_array.push( { name: "john", city: "kansas city", zip: 72345 } );
rec_array.push( { name: "bob", city: "omaha", zip: 94010 } );
for(i=0; i<rec_array.length; i++) {
 trace(rec_array[i].name + ", " + rec_array[i].city);
}
// da lugar a 
// john, omaha
// john, kansas city
// bob, omaha

rec_array.sortOn( [ "name", "city" ]);
for(i=0; i<rec_array.length; i++) {
 trace(rec_array[i].name + ", " + rec_array[i].city);
}
// da lugar a 
// bob, omaha
// john, kansas city
// john, omaha

rec_array.sortOn( ["city", "name" ]);
for(i=0; i<rec_array.length; i++) {
 trace(rec_array[i].name + ", " + rec_array[i].city);
}
// da lugar a 
// john, kansas city
// bob, omaha
// john, omaha

Véase también

| (OR en modo bit), Array.sort()