Argomenti trattati: la gestione degli Array.
Gli Array sono considerati in JavaScript come degli oggetti, la sintassi è perciò caratterizzata dal costruttore new:
var Mio_Array= new Array(Numero_degli_Elementi_presenti);
possono essere compresi immaginandoli come delle variabili contenitore, ovvero delle variabili che contengono più dati. Tali dati, impiegando l'indice dell'Array, possono essere considerati come delle variabili a sé stanti. Normalmente, vengono utilizzati in JavaScript degli Array unidimensionali, che possono essere così rappresentati:
Per definire tutto questo in JavaScript, scriviamo, riferendoci all'elenco precedente:
var Sport_Vari= new Array ("Calcio", "Nuoto", "Tennis", "Ginnastica Artistica", "Pattinaggio", "Spinning", "Lotta libera")
oppure:
var Sport_Vari= new Array(7);
Sport_Vari[0]="Calcio";
Sport_Vari[1]="Nuoto";
Sport_Vari[2]="Tennis";
Sport_Vari[3]="Ginnastica Artistica";
Sport_Vari[4]="Pattinaggio";
Sport_Vari[5]="Spinning";
Sport_Vari[6]="Lotta Libera";
Notare con molta attenzione che var Sport_Vari= New Array(7); mostra tra parentesi il valore 7, perché al momento della dichiarazione dell'Array occorre scrivere tra parentesi il numero degli elementi in esso presenti, e non il valore dell'indice finale.
Ci sono vari motivi per cui è meglio utilizzare Array, piuttosto che variabili singole. Tralasciando i vari casi, è per ora importante concentrarsi sugli Array in JavaScript, che hanno caratteristiche proprie, rispetto agli Array in linguaggi come il C o il Visual Basic, cioè linguaggi Strongly Typed. Esaminandole:
array Sport_Vari_e_Numeri |
---|
"Calcio" |
123 |
"Tennis" |
844 |
"Pattinaggio" |
25 |
"Lotta libera" |
La dimensione dell'Array può variare nel corso dello script, così non darebbe un errore aggiungere al codice
var Sport_Vari= new Array(7);
Sport_Vari[0]="Calcio";
Sport_Vari[1]="Nuoto";
Sport_Vari[2]="Tennis";
Sport_Vari[3]="Ginnastica Artistica";
Sport_Vari[4]="Pattinaggio";
Sport_Vari[5]="Spinning";
Sport_Vari[6]="Lotta Libera";
Sport_Vari[7]="Baseball";
Sport_Vari[8]="Sci";
nonostante sia stato dichiarato "var Sport_Vari= New Array(7);" nella parte iniziale del codice.
Data la libertà nella dimensione degli Array in JavaScript, un Array può essere dichiarato anche nel seguente modo:
var MioArray=new Array();
Da notare che l'indice può essere sostituito da un'espressione. oppure da una variabile, oppure da una costante.
var k=8;
var MioArray=new Array(5 + k);
Metodi |
La sintassi generale è: NomeArray.Metodo(eventuale argomento); |
---|---|
concat() | var PrimoArray=new
Array(1,2,3,4,5); var SecondoArray=newArray(6,7,8,9,10); var MiaVariabile=PrimoArray.concat(SecondoArray) Questo metodo concatena 2 Array. Se la
concatenazione viene assegnata ad un'altra variabile, essa diventa
automaticamente un oggetto Array, con tutte le sue proprietà. |
join() | Questo metodo restituisce una stringa al posto di un Array. La stringa conterrà tutti gli elementi dell'Array passato, considerati come stringhe indipendentemente dal tipo di variabili contenute nell'Array, e gli elementi nella stringa risulteranno separati dall'argomento passato al metodo. |
pop() | Questo metodo elimina l'ultimo elemento di un Array |
push() | Questo metodo
aggiunge elementi alla fine di un Array. Dato l'esempio dell'Array Sport_Vari, potremmo aggiungere come ultimi 2 elementi "Volley" o "Spinning" scrivendo il seguente codice: Sport_Vari.push("Volley","Corsa Campestre"); |
reverse() | Questo metodo
inverte gli elementi in un Array. Preso l'esempio dell'Array precedente:
|
shift() | Questo metodo elimina il primo elemento all'inizio di un Array |
slice() | Questo metodo
restituisce una parte dell'Array. La sintassi è: NomeArray.slice(inizio,fine). L'argomento fine può essere omesso, in quel caso automaticamente si intende l'ultimo elemento dell'Array. Il primo elemento sarà indicato da zero. |
sort() | Questo metodo ordina, alfabeticamente o numericamente, gli elementi di un Array. |
toString() | Questo metodo converte in stringhe, separate da virgole, gli elementi dell'Array cui si applica. |
unshift() | Questo metodo
aggiunge elementi all'inizio di un Array. Dato l'esempio dell'Array Sport_Vari, potremmo aggiungere come primi 2 elementi "Volley" o "Spinning" scrivendo il seguente codice: Sport_Vari.unshifth("Volley","Corsa Campestre"); |
valueOf() | Questo metodo converte in stringhe, separate da virgole, gli elementi dell'Array cui si applica. |
Proprietà | |
length | Restituisce il numero degli elementi nell'Array. |
prototype | Permette di aggiungere metodi o proprietà alle istanze dell'oggetto Array. |
Non è necessario che una variabile sia dichiarata immediatamente come Array. Infatti è possibile dichiarare una variabile e definirla come Array in seguito, all'interno di una funzione. Anche il numero di elementi nell'Array può essere parametrizzato.
var arr=9; // dichiaro e
inizializzo la
variabile arr; var _length; // dichiaro un'ulteriore variabile, che rappresenterà la lunghezza dell'Array function inizializza() // dichiaro una funzione che mi restituirà un valore numerico { return 5; } _length=inizializza(); // assegno a _length il valore restituito da inizializza function prova_array() { arr=new Array(_length); // utilizzo il costruttore new Array() for(i=0;i<_length;i++) { arr[i]=i; alert(arr[i]); } } |
Un ulteriore possibilità offerta da JavaScript è quella di utilizzare Array multidimensionali, rappresentabili come vere e proprie matrici caratterizzate da righe e colonne. Riprendendo perciò l'esempio all'inizio della pagina, volendo rappresentare in un unico Array lo sport praticato e chi lo pratica, si può dichiarare:
array Sport_Vari | ||||||
|
0 | 1 | ||||
0 | "Calcio" | "pippo" | ||||
1 | "Nuoto" | "topolino" | ||||
2 | "Tennis" | "paperino" | ||||
3 | "Ginnastica Artistica" | "minnie" | ||||
4 | "Pattinaggio" | "paperina" | ||||
5 | "Spinning" | "clarabella" | ||||
6 | "Lotta libera" | "gamba di legno" |
Per dichiarare un Array multidimensionale si può utilizzare la seguente modalità:
var arr1=new Array();
for (i=0;i<document.insert.list1.options.length;i++) { |
Per riempire l'Array:
arr1[0][0]="Calcio"; |