Archivo etiqueta Array
Mucha gente dirá que hace rato que existe la versión 3 de ActionScript (aprox. más de 4 años) y que hacer un artículo ahora sobre la versión anterior es un poco tarde.
En realidad por mucho que uno intenta imponer AS3, todavía hay programadores y diseñadores que lo utilizan diariamente, y multitud de desarrollos están en AS2.
Luego éste pequeño justificativo, vamos al problema que nos toca en el día de hoy. Si utilizamos un array con índices numéricos, con la propiedad length podremos conocer la cantidad de elementos que contiene determinado array:
var array:Array = new Array(); array[0] = 0; array[1] = 1; array[2] = 2; array[3] = 3; trace(array.length); //devuelve 4
También se podría haber utilizado push() para insertar los elementos, con el mismo efecto. Pero si queremos utilizar como índice una cadena, el resultado no es el mismo (acaso un bug?):
var array2:Array = new Array(); array2['cero'] = 0; array2['uno'] = 1; array2['dos'] = 2; array2['tres'] = 3; trace(array2.length); //devuelve 0
Aún cuando nos aseguramos que los valores se han guardado en el array:
trace(array2['cero']); //devuelve 0 trace(array2['uno']); //devuelve 1 trace(array2['dos']); //devuelve 2 trace(array2['tres']); //devuelve 3
Para solucionar ésto podemos recurrir a un prototype para que nos calcule ésto:
Array.prototype.getLength = function():Number {
var empty:Array = [];
var long:Number = 0;
for (var key:String in this) {
if (empty[key] == undefined){
long++;
}
}
return long;
}
Es un sencillo bucle, que cuenta la cantidad de elementos y retorna ese valor:
trace(array2.getLength()); //devuelve 4
Espero que les sea útil, hasta la próxima.