Arrays

Volver al ͍ndice

Un array es una lista numerada de datos del mismo tipo. Estos datos pueden ser números, cadenas de texto o cualquier otro tipo de objeto.

Como ocurre con los objetos (Object), no se declaran los tipos de los datos contenidos dentro del array, por lo que, de nuevo habrá que tener cuidado al asignar valores porque no se comprobará si los tipos de dato coinciden durante la compilación.

Declarar e inicializar un Array

La forma rigurosa de definir e inicializar un Array es al siguiente

var lista = new Array();

Aunque la forma más habitual y recomendada es la siguiente:

var lista:Array = [];

Las dos, tal y como las hemos escrito tienen el mismo resultado: Declaran una variable lista de tipo Array y la inicializan creando un Array vacío en memoria.

Pequeño inciso

Este array está vacío pero existe, lo cual es un requisito indispensable para que después podamos usarlo. Y esto lo cuento, aunque parezca evidente, porque a veces conviene declarar el array sin inicializarlo:

var lista:Array;

Con otros tipos de variable, esta declaración es suficiente para que se le puedan dar valores a la variable con posterioridad. En el caso de los Arrays, no se pueden introducir valores en los “huecos” del array hasta que no se haya inicializado. Así que si durante la ejecución de un programa obtenemos el error:

TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
	at Untitled_fla::MainTimeline/frame1()

Es probable que sea porque hemos declarado el array:

var lista:Array;

Pero no lo hayamos inicializado posteriormente

lista = ["mazana", "naranja"];

Añadiendo valores a un Array

Los valores de la lista se pueden añadir en la misma sentencia de la declaración e inicialización del Array.

var listaFrutas:Array = ["naranja", "manzana", "pera"];
var listaPrecios:Array = [3.5, 2.75, 1.85];
var listaTareas:Array = ["Comprar fruta", "Recoger trabajos imprenta", 
						"Acabar proyecto", "Descargar Ejercicios clase", "Recoger a los niños"];

También podemos no añadir ningún elemento en la declaración y luego añadirlos uno a uno, utilizando el método push() de la clase Array:

var listaFrutas:Array = [];
listaFrutas.push("naranja");
listaFrutas.push("manzana");
listaFrutas.push("pera");

O añadirlos simplemente haciendo referencia al elemento del array que queremos modificar:

var listaFrutas:Array = [];
listaFrutas[0] = "naranja";
listaFrutas[1] = "manzana";
listaFrutas[2] = "pera";

En este segundo método hay que tener cuidado porque si los elementos del índice especificado ya existen, serán sobreescritos. A veces es lo que queremos, pero no siempre.
Es importante recordar siempre que el primer elemento de un array tiene índice 0.

También es importante recordar que push() añade elementos siempre al final de array.
O sea que:

	var listaPrecios:Array = [3.5, 2.75, 1.85];
	listaPrecios.push(7.8);
	trace(listaPrecios);

devolverá a la consola:

3.5, 2.75, 1.85, 7.8

Si queremos añadir elementos al principio del array tendremos que utilizar el método unshift()

	var listaPrecios:Array = [3.5, 2.75, 1.85];
	listaPrecios.unshift(7.8);
	trace(listaPrecios);

quedevolverá a la consola:

7.8, 3.5, 2.75, 1.85

Otro pequeño detalle que tiene su importancia, es que es muy fácil equivocarse con las comas y los puntos:

  • La coma (,) es un separador que se utiliza en arrays y objetos para separar elementos.
  • El punto .) es el que marca los decimales, o mejor dicho es el separador decimal.

Leer los valores de un Array

Para esto se utiliza directamente el nombre del array sequido del número de orden del elemento que queremos leer

var listaFrutas:Array = ["naranja", "manzana", "pera"];
var siguienteCompra:String = listaFrutas[1];
trace("La siguiente fruta a comprar es:", siguienteCompra);

tiene como resultado:
La siguiente fruta a comprar es: manzana

Averiguar la longitud (número de elementos) de un array

Es muy sencillo y se utiliza mucho (sobre todo cuando queremos que un bucle recorra los elementos de un array para realizar operciones repetitivas sobre ellos).
El tipo de variable Array tiene una propiedad (variable), length que contiene la longitud del mismo. l

var listaTareas:Array = ["Comprar fruta", "Recoger trabajos imprenta", 
						"Acabar proyecto", "Descargar Ejercicios clase", "Recoger a los niños"];
trace("Tareas a realizar:", listaTareas.length);						

Borrar elementos de un array

Para eliminar el último elemento de un array se utiliza el método pop():

var listaPrecios:Array = [3.5, 2.75, 1.85];
	listaPrecios.pop(); // Sin poner ningún valor dentro de los paréntesis
	trace(listaPrecios);

devolverá a la consola:

3.5, 2.75

También se pueden eliminar elementos al principio de un array con el método shift()

var listaPrecios:Array = [3.5, 2.75, 1.85];
	listaPrecios.shift(); // Sin poner ningún valor dentro de los paréntesis
	trace(listaPrecios);

devolverá a la consola:

2.75, 2.75, 1.85

Alguno puede tener la tentación de hacer algo así para eliminar un elemento intermedio:

var listaPrecios:Array = [3.5, 2.75, 1.85];
						
listaPrecios[1] = null;

Pero esto sólo pone a null el elemento especificado. No elimina el hueco.

trace(listaPrecios);
3.5,,1.85

Fijaos en que hay dos comas seguidas evidenciando que hay un hueco vacío en el array. Esto nos sirvce de mucho y puede provocar muchos errores en nuestros programas.

Así que la forma correcta de eliminar un elemento intermedio del array(y así borrar el valor y el hueco) es utilizar el método splice():

var listaTareas:Array = ["Comprar fruta", "Recoger trabajos imprenta", 
						"Acabar proyecto", "Descargar Ejercicios clase", "Recoger a los niños"];
// Al utilizar splice() el primer valor entre paréntesis
// es el índice del elemento en el que empezar a borrar 
// y el segundo es el número de elementos a borrar						
listaTareas.splice(2,1); 
trace(listaTareas);
"Comprar fruta", "Recoger trabajos imprenta", null, "Descargar Ejercicios clase", "Recoger a los niños"

Creo que es suficiente por ahora, ahora ya deberías saber como usar un Array.

Volver al Índice

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *