Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 27 di 112
  • livello avanzato
Indice lezioni

Array in JavaScript, l'oggetto e i metodi built-in

Gestire gli array grazie alle funzioni dell'omonimo oggetto JavaScript: realizzare una pila, cercare tra gli elementi, rappresentare l'array come stringa...
Gestire gli array grazie alle funzioni dell'omonimo oggetto JavaScript: realizzare una pila, cercare tra gli elementi, rappresentare l'array come stringa...
Link copiato negli appunti

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"

Ti consigliamo anche