back to top

Array Javascript

Gli Array(), come le variabili, sono una porzione di memoria allโ€™interno delle quali vengono immagazzinati dei dati. Se nella variabile viene immagazzinata una specifica informazione (ad esempio un numero, una stringa, un valore booleano, ecc.) nellโ€™array possono essere incapsulati una pluralitร  di informazioni allโ€™interno di una sorta griglia astratta. Javascript, come tutti i linguaggi di programmazione che si rispettino, supporta e gestisce gli array.

Definire un array

Vediamo la sintassi per la creazione di un oggetto Array() in Javascript:

Pubblicitร 
var esempio = new Array();

Cosรฌ facendo abbiamo definito unโ€™array vuota.

Inserire dati nellโ€™array

Per inserire i dati (che prendono il nome di item, elementi) in questo particolare tipo di variabile si possono seguire due strade, la prima consiste nel dichiarare i singoli dati su piรน righe passando tra parentesi quadre un numerico intero univoco identificativo di ogni singole voce, da zero a n. Ad esempio:

var esempio = new Array();
esempio[0] = "primo dato";
esempio[1] = "secondo dato";
esempio[2] = "terzo dato";

Il secondo metodo, piรน sintetico, consiste nel passare i dati tra parentesi come parametri dellโ€™oggetto avendo cura di seprararli con una virgola:

var esempio = new Array("primo dato", "secondo dato", "terzo dato");

La differenza consiste sostanzialmente in una questione di ordine e di preferenze nello stile di programmazione.

N.B. Eโ€™ solo il caso di ricordare che se si tratta di stringhe sarร  necessario utilizzare le virgolette per racchiudere ogni item dellโ€™Array, mentre se si tratta di numeri ciรฒ non รจ necessario.

Leggere i dati contenuti in un array

Per estrarre un singolo elemento da unโ€™array รจ necessario richiamare il nome dellโ€™array seguita dallโ€™indice dellโ€™elemento di nostro interesse:

document.write(esempio[1]);

Per leggere tutti i dati di un Array(), invece, occorre ciclarlo con lโ€™istruzione for(), ipotizziamo il caso precedente:

var esempio = new Array();
esempio[0] = "primo dato";
esempio[1] = "secondo dato";
esempio[2] = "terzo dato";

// ciclo for
for (var i = 0; i < 3; i++) {
  document.write(esempio[i] + "<br>");
}

Per stampare lโ€™output a video ci siamo serviti, come sempre, del document.write() passandogli la variabile di tipo Array() associata al contatore [i] del ciclo, ecco lโ€™output di questo esempio:

primo dato
secondo dato
terzo dato

La proprietร  length

Si noti che nellโ€™esempio sapevamo esattamente quanti erano gli elementi contenuti nel nostro Array(); tuttavia puรฒ capitare di non conoscere a priori questo valore. In questo caso รจ possibile calcolare dinamicamente il numero di elementi contenuti nellโ€™array attraverso la proprietร  lenght (la stessa proprietร  puรฒ essere applicata anche ad una stringa per contarne i caratteri, nel caso degli Array() viene calcolato il numero di indici presenti).

Vediamo un esempio:

var frutta = new Array();
frutta[0] = "Mele";
frutta[1] = "Pere";
frutta[2] = "Banane";
frutta[3] = "Pesche";

// ciclo for con limite calcolato dinamicamente
for (var i = 0; i < frutta.length; i++) {
  document.write(frutta[i] + "<br>");
}

Vediamo un ulteriore esempio che credo sia molto esplicativo circa il funzionamento della proprietร  length:

document.write("Ci sono " + frutta.length + " tipi di frutta");

Lโ€™output sarร :

Ci sono 4 tipi di frutta

Aggiungere ed eliminare elementi: push, pop, shift, unshift

Grazie ai metodi push e pop รจ possibile, rispettivamente, aggiungere ed eleiminare un elemento in coda ad un array. Per prima cosa vediamo come utilizzare push() per aggiungere un elemento alla fine di un array:

var frutta = new Array();
frutta[0] = "Mele";
frutta[1] = "Pere";
frutta[2] = "Banane";
frutta[3] = "Pesche";

// aggiungo un elemento in coda all'array frutta
frutta.push("fragole");

La nostra array avrร  i seguenti elementi:

Mele, Pere, Banane, Pesche, Fragole

Supponendo, invece, di voler eliminare lโ€™ultimo elemento di un array si utilizza il metodo pop():

var frutta = new Array();
frutta[0] = "Mele";
frutta[1] = "Pere";
frutta[2] = "Banane";
frutta[3] = "Pesche";

// elimino un elemento in coda all'array frutta
frutta.pop();

La nostra array avrร  ora i seguenti elementi:

Mele, Pere, Banane

Allo stesso modo i metodi shift e unshift consentono di eliminare ed aggiungere elementi in cima ad un array. Vediamo come aggiungere un elemento in cima ad un array con unshift:

var frutta = new Array();
frutta[0] = "Mele";
frutta[1] = "Pere";
frutta[2] = "Banane";
frutta[3] = "Pesche";

// aggiungo un elemento in cima all'array frutta
frutta.unshift("fragole");

La nostra array avrร  i seguenti elementi:

Fragole, Mele, Pere, Banane, Pesche

Supponendo, invece, di voler eliminare il primo elemento di un array useremo shift:

var frutta = new Array();
frutta[0] = "Mele";
frutta[1] = "Pere";
frutta[2] = "Banane";
frutta[3] = "Pesche";

// elimino un elemento in cima all'array frutta
frutta.shift();

La nostra array avrร  ora i seguenti elementi:

Pere, Banane, Pesche

Ordinamento di un array: sort e reverse

Lavorando con gli Array() si ha casisticamente lโ€™esigenza di manipolare i dati in maniera diversa da quella nativa, ad esempio ordinando i dati secondo un certo criterio o manipolandoli come una stringa, occupiamoci ora di definire i principali metodi e le proprietร  che ci permettono di stabilire questi controlli.

Possiamo decidere di ordinare un Array() in ordine alfabetico grazie al metodo sort, vediamo un esempio:

var nominativi = new Array();
nominativi[0] = "Gianni Rivera";
nominativi[1] = "Paolo Rossi";
nominativi[2] = "Claudio Gentile";

// ordinamento
nominativi.sort();

// ciclo for
for (var i=0; i<nominativi.length; i++) {
  document.write(nominativi[i] + "<br>");
}

Nonostante lโ€™ordine stabilito allโ€™atto della creazione dellโ€™Array(), ci troveremo di fronte ad una situazione del genere:

Claudio Gentile
Gianni Rivera
Paolo Rossi

Siamo in questo modo riusciti ad ordinare i dati dellโ€™Array() in ordine alfabetico in considerazione della prima lettera che viete trovata nella lettura delle singole stringhe rappresentanti i valori associati ai singoli indici dellโ€™Array().

Grazie al metodo reverse, invece, possiamo invertire lโ€™ordine di un Array() in senso contrario, se riprendiamo lโ€™esempio appena proposto e lo modifichiamo come segue:

var nominativi = new Array();
nominativi[0] = "Gianni Rivera";
nominativi[1] = "Paolo Rossi";
nominativi[2] = "Claudio Gentile";

// ordinamento
nominativi.reverse();

// ciclo for
for (var i=0; i<nominativi.length; i++) {
  document.write(nominativi[i] + "<br>");
}

otterremo il seguente risultato:

Claudio Gentile
Paolo Rossi
Gianni Rivera

Concatenare due array

Il metodo concat ci permette di concatenare due o piรน Array(). Vediamo un esempio:

// definisco due array
var lettere = new Array('A','B','C');
var numeri = new Array(1,2,3,4,5,6);

// unisco le due array
var nuova = lettere.concat(numeri);

// ciclo for
for (var i=0; i<nuova.length; i++) {
  document.write(nuova[i] + ",");
}

Otterremo

A,B,C,1,2,3,4,5,6

Convertire un array in stringa

Simili tra loro sono i metodi toString e join, la loro funzione รจ quella di convertire un Array() in una stringa. Mentre toString() crea un elenco di elementi separati da una virgola, il metodo join() permette di scegliere il o i caratteri da utilizzare per la separazione, vediamo un esempio di entrambi:

var lettere = new Array();
lettere[0] = "A";
lettere[1] = "B";
lettere[2] = "C";
document.write(lettere.toString());

che ci restituirร :

A,B,C
var lettere = new Array();
lettere[0] = "A";
lettere[1] = "B";
lettere[2] = "C";
document.write(lettere.join('-'));

che ci restituirร 

A-B-C
Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).