7. Array

Gli Array sono un tipo di dato particolare, in quanto ci consentono di racchiudere sotto ad un nome comune una collezione di variabili.

Il punto di forza degli array è quello di consentirci in poche righe di codice, di effettuare delle iterazioni per scorrere i dati contenuti nell'array, permettendoci quindi di gestire con facilità liste di elementi anche complessi.

Anche in questo caso come per le stringhe, il tipo di dato array viene gestito come nativo, mettendoci a disposizione sia gli operatori classici, come quello di accesso [] agli elementi, che la classe Array stessa.

Vediamo direttamente la sintassi corretta utilizzando il tipo di dato come un'istanza della classe Array :

var iscritti:Array = new Array(3); // Crea un array vuoto di 3 elementi
iscritti[0] = "Utente 1"; // Memorizza la stringa "Utente 1" nel primo elemento dell'array
iscritti[1] = "Utente 2"; // Memorizza la stringa "Utente 2" nel secondo elemento
iscritti[2] = "Utente 3"; // Memorizza la stringa "Utente 3" nel terzo elemento

/* La funzione "push" inserisce la stringa "Utente 4"

alla fine dell'array, quindi alla quarta posizione */
iscritti.push("Utente 4");

trace(iscritti); // Output : Utente 1, Utente 2, Utente 3, Utente 4
trace(iscritti.length); // Output : 4

Osservando il codice soprastante si può dedurre che il conteggio degli elementi inizia dalla posizione zero, quindi il primo elemento è accessibile attraverso l'istruzione array[0].

Anche la classe Array come String, deriva da Object e possiede l'attributo length, che indica il numero di elementi di cui è composto l'array.


Classe Array

Di seguito una lista dei metodi che ritengo di maggiore importanza e che mi sono trovato ad utilizzare più spesso :

  • concat() - Concatena gli elementi specificati all'array da cui è stato chiamato il metodo.
    Se un parametro è un altro array, ne vengono concatenati tutti gli elementi prima di passare al parametro successivo.
  • forEach() - Prende come parametro una funzione che sarà eseguita su ogni elemento dell'array.
  • indexOf() - Restituisce l'indice della prima occorrenza dell'elemento specificato.
  • join() - Unisce gli elementi dell'array in una stringa, separandoli con il delimitatore specificato.
  • pop() - Restituisce l'ultimo elemento dell'array rimuovendolo.
  • shift() - Restituisce il primo elemento dell'array rimuovendolo.
  • push() - Aggiunge elementi alla fine dell'array restituendo la nuova dimensione.
  • unshift() - Aggiunge elementi all'inizio dell'array restituendo la nuova dimensione.
  • slice() - Prende come parametri un'indice di inizio e uno di fine, che stabiliranno la porzione da cui creare e restituire un nuovo array.
  • sort() - Ordina gli elementi di un array.
  • sortOn() - Ordina gli elementi di un array in base a uno o più elementi di esso.
  • splice() - Modifica l'array aggiungendo o rimuovendo elementi da esso.

Esempio con concat()

var numeri:Array = new Array(1, 2, 3);
var lettere:Array = new Array("a", "b", "c");
var frutti:Array = new Array("pera", "banana", "cocco");

var unione:Array = numeri.concat(4, lettere, "d", frutti);

trace(unione); // Output : 1,2,3,4,a,b,c,d,pera,banana,cocco
trace(unione.length); // Output : 11

La classe Array inoltre possiede due costruttori.

Il primo costruttore prende come parametro un numero intero che stabilisce la dimensione dell'array, e viene chiamato se si specifica un solo parametro di tipo int o se non viene specificato alcun parametro, impostando in quest ultimo caso un array di zero elementi.

Il secondo costruttore invece, prende uno o N parametri che saranno considerati in modo ordinato come gli elementi del nuovo array.
Questo costruttore viene richiamato se viene specificato più di un parametro o se il primo parametro non è un numero intero.

Consideriamo il seguente codice :

var iscritti:Array = new Array(); // Chiama il primo costruttore
var iscritti:Array = new Array(3); // ... primo costruttore
var iscritti:Array = new Array("3"); // ... secondo costruttore
var iscritti:Array = new Array(3, 5); // ... secondo costruttore
var iscritti:Array = new Array(null); // ... secondo costruttore
  1. Effettua una chiamata al primo costruttore, inizializzando un array di zero elementi.
  2. Chiama ancora il primo costruttore, inizializzando un array vuoto di tre elementi.
  3. Chiama il secondo costruttore, creando un array di un solo elemento. Questo elemento avrà il valore "3" di tipo String.
  4. Chiama il secondo costruttore, creando un array di due elementi. Questi due elementi saranno i numeri interi 3 e 5.
  5. Chiama nuovamente il secondo costruttore inizializzando un array di un elemento, il quale avrà il valore null.

Ricordate che negli array potete memorizzare anche dati complessi, quindi istanze di classi a cui potrete accedere col metodo classico :

var dati:Array = new Array();
dati.push(new String("Flash CS3"));
dati.push(new String("ActionScript 3"));

trace(dati[0].length); // Output : 9
trace(dati[1].length); // Output : 14