Oltre a ricorrere alla notazione letterale, possiamo creare un array sfruttando l'omonimo oggetto Array. Il seguente è un esempio di creazione di un array vuoto:
var x = new Array();
È possibile creare un array di un numero predefinito di elementi specificando tale numero in fase di creazione:
var x = new Array(5);
Gli elementi che compongono l'array creato in questo modo saranno di tipo undefined
.
Se in fase di creazione di un array vengono passati più di un argomento, verrà creato un array composto da tali elementi:
var x = new Array(3, 5, "testo", true);
length e le dimensioni dinamiche degli array
La proprietà comunemente più utilizzata di un array è length che indica il numero di elementi in esso contenuti. Data la natura dinamica degli array di JavaScript, il valore di length
può cambiare in base alle operazioni effettuate sull'array stesso, come ad esempio l'aggiunta o l'eliminazione di elementi.
D'altro canto, la modifica del valore della proprietà length
ha effetti sulla struttura di un array. Ad esempio, il seguente codice crea un array vuoto e poi vi aggiunge implicitamente 10 elementi:
var x = new Array(); x.length = 10;
Come abbiamo detto, gli array di JavaScript sono strutture dinamiche che assomigliano più alle liste che ad un classico array della maggior parte dei linguaggi di programmazione. Le loro dimensioni possono variare in fase di esecuzione, quindi possiamo ad esempio creare un array di un determinato numero di elementi e poi aumentare o diminuire gli elementi in esso contenuti:
var x = new Array("uno", "due", "tre");
x.length = 5; //["uno", "due", "tre", undefined, undefined]
x.lenght = 2; //["uno", "due"]
Push e pop, aggiungere o eliminare elementi in stile pila (FIFO)
Tramite i metodi push() e pop() possiamo aggiungere e eliminare elementi in coda ad un array.
Metodo | Descrizione |
---|---|
push() | aggiunge un elemento alla fine di un array e restituisce la nuova lunghezza |
pop() | rimuove l'ultimo elemento di un array e restituisce l'elemento eliminato |
Ecco un semplice esempio di pila:
var stack = new Array("uno", "due", "tre");
stack.push("quattro"); //["uno", "due", "tre", "quattro"]
stack.pop(); //["uno", "due", "tre"]
Analogamente, i metodi shift() e unshift() consentono di eliminare ed aggiungere elementi in cima ad un array.
Metodo | Descrizione |
---|---|
shift() | elimina il primo elemento di un array e lo restituisce al chiamante |
unshift() | aggiunge un elemento in cima all'array e restituisce la nuova lunghezza |
Ecco un esempio:
var x = new Array("uno", "due", "tre");
var y = x.unshift("zero"); //x = ["zero", "uno", "due", "tre"] ; y = 4
var z = x.shift(); //x = ["uno", "due", "tre"] ; z = "zero"
Splice, aggiungere o togliere elementi in qualunque posizione dell'array
Per l'aggiunta e la rimozione di elementi in qualsiasi posizione all'interno di un array possiamo ricorrere al metodo splice(). Esso prevede due argomenti obbligatori e un numero indefinito di argomenti opzionali.
- Il primo argomento indica la posizione dell'array da cui eliminare o aggiungere elementi;
- il secondo argomento indica il numero di elementi da eliminare;
- dal terzo argomento in poi è possibile specificare gli elementi da aggiungere.
In pratica splice()
individua una posizione nell'array a partire dalla quale elimina il numero di elementi specificati come secondo argomento ed aggiunge gli eventuali elementi passati dal terzo argomento in poi.
Ecco qualche esempio di utilizzo del metodo:
var x = new Array("uno", "due", "tre");
var y = x.splice(1, 1, "quattro");
// x = ["uno", "quattro", "tre"]
// y = ["due"]
var z = x.splice(2, 0, "cinque", "sei", "sette");
// x = ["uno", "quattro", "cinque", "sei", "sette", "tre"]
// z = []
Tramite il metodo slice()
abbiamo la possibilità di estrarre una porzione di array fornendo l'indice iniziale e quello finale:
var x = new Array("uno", "due", "tre", "quattro");
var y = x.slice(1, 3); // y = ["due", "tre"]
Come possiamo notare, l'elemento corrispondente all'indice finale (3 nel nostro esempio) non viene incluso nell'array estratto.
Concatenare due array
Possiamo combinare insieme due array sfruttando il metodo concat()
. Il risultato è un array contenente gli elementi di due array:
var x = new Array("uno", "due", "tre");
var y = new Array("quattro", "cinque");
var z = x.concat(y); //["uno", "due", "tre", "quattro", "cinque"]
Ordinare gli array, sort e reverse
Tra le altre operazioni che possiamo eseguire sugli array segnaliamo l'ordinamento tramite il metodo sort() e l'inversione dell'ordine degli elementi tramite reverse():
var x = new Array("uno", "due", "tre");
x.sort(); //["due", "tre", "uno"]
x.reverse(); //["uno", "tre", "due"]
Cercare un elemento nell'array, indexOf
Possiamo individuare l'indice di un elemento all'interno di un array tramite il metodo indexOf(). Questo metodo scandisce l'array alla ricerca dell'elemento e restituisce l'indice della prima occorrenza trovata:
var x = new Array("uno", "due", "tre");
var y = x.indexOf("due"); // 1
Se l'elemento non viene trovato nell'array indexOf()
restituisce -1
. La scansione dell'array effettuata da indexOf()
alla avviene partendo dal primo elemento. Possiamo effettuare una ricerca partendo dall'ultimo elemento dell'array utilizzando il metodo lastIndexOf()
.
Convertire l'array in una stringa
Concludiamo infine con il metodo join() che consente di ottenere una stringa a partire dagli elementi di un array:
var x = new Array("uno", "due", "tre");
var y = x.join(); //"uno,due,tre"
La stringa ottenuta non è altro che la concatenazione degli elementi dell'array separati dalla virgola.
Possiamo indicare quale carattere o quale stringa utilizzare come separatore specificando un argomento, come mostrato di seguito:
var x = new Array("uno", "due", "tre");
var y = x.join(" e poi "); //"uno e poi due e poi tre"