Uno dei più importanti costruttori utilizzati in MooTools è sicuramente Array. Esso fornisce metodi molto utili per effettuare iterazioni su array e collezioni di elementi e per compiere un qualsiasi tipo di operazione con gli elementi di questi ultimi (tra queste troviamo l'estensione, il concatenamento e molte altre). In questa lezione daremo uno sguardo ai principali metodi di iterazione offerti da questa classe.
Each
Il metodo più diffuso per iterare su array o collezioni è sicuramente each. Esso permette di richiamare una funzione per ogni elemento del nostro array, al quale viene passato un riferimento all'elemento corrente e il suo indice:
// alert '0 = red', '1 = blue' e cosi via ['red', 'blue', 'green'].each(function(color, index) { alert(index + " = " + color); });
Possiamo utilizzare in aggiunta un secondo importantissimo parametro, bind
, che indica l'oggetto che assumerà il ruolo di this
all'interno del ciclo di iterazione.
Every
Every è un metodo di "checking", il che significa che restituisce true solo se ogni elemento dell'array soddisfa la condizione presente nella funzione passata come parametro, altrimenti restituisce false. Anche in questo caso è possibile utilizzare un ulteriore parametro per il "binding":
var big = [10, 4, 25, 100].every(function(item, index){ return item > 20; }); // big è false, dato che 10 e 4 sono minori di 20
Filter
Come indica la parola, il metodo filter
"filtra" l'array e ne restituisce uno nuovo contenente gli elementi che hanno soddisfatto la condizione presente nella funzione passata come parametro. Anche con il metodo filter
è possibile specificare un oggetto per il "binding".
var biggerThanTwenty = [10, 3, 25, 100].filter(function(item, index){ return item > 20; }); // biggerThanTwenty è uguale a: [25, 100]
Map
Il metodo map
restituisce un nuovo array contenente come elementi il risultato della condizione specificata nella funzione di iterazione. Anche in questo caso è possibile effettuare il "binding":
// moltiplica ogni elemento per 2 var timesTwo = [1, 2, 3].map(function(item, index){ return item * 2; }); // timesTwo è uguale a: [2, 4, 6];
Some
Questo metodo fornisce una funzionalità simile a quella del metodo every
, dato che efftua un "check" sulla quantità di elementi che rispondono correttamente alla condizione. Restituisce true se almeno uno degli elementi soddisfa la condizione specificata dalla funzione di iterazione:
// big è uguale a true dato che 25 è maggiore di 20 var big = [10, 4, 25, 100].some(function(item, index){ return item > 20; });
Conclusione
In questa lezione abbiamo visto come utilizzare i metodi offerti dal costruttore Array per effettuare cicli di iterazione sugli elementi di un array o di una qualsiasi collezione. Ovviamente il prototype della classe Array offerto da MooTools offre molti altri metodi molto utili, come clean
, associate
, link
ed extend
, ma non basterebbe una sola lezione per esemplificarli tutti. Per maggior informazioni ecco il link alla documentazione che tratta la classe Array.