38.1 Metodi dell’oggetto Array

toString

Dato il seguente array:

let days = ['MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY'];

se vogliamo trasformare l’array in una stringa abbiamo a disposizione il metodo toString

console.log(days.toString());

otterremo tutto il contenuto dell’array come una stringa e ogni dato dell’array sarà separato da una virgola

"MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY"

slice

permette di copiare una porzione di un array. Mettiamo un pezzo dell’array days dentro un altro:

let arrayCopy = days.slice(0,2);
console.log(arrayCopy);

il primo parametro del metodo slice è l’inizio, il secondo è la fine, infatti:

["MONDAY", "TUESDAY"]

abbiamo copiato i dati dalla posizione 0 alla posizione 2 NON INCLUSA.

Se non passo nessun parametro ottengo una copia speculare dell’intero array

let arrayCopy = days.slice();
console.log(arrayCopy);

Se modifico i valori della copia, l’array di origine rimane invariato

let arrayCopy = days.slice();
arrayCopy[1] = 'Martedì';
console.log(days);
console.log(arrayCopy);

vediamo il confronto tra i 2 array

["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]
["MONDAY", "Martedì", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]

join

Se vogliamo trasformare un array in una stringa separando i valori da un separatore a nostra scelta

console.log(days.join('/'));

ecco il risultato

MONDAY/TUESDAY/WEDNESDAY/THURSDAY/FRIDAY/SATURDAY/SUNDAY

il metodo join non modifica l’array di partenza, per memorizzare il valore possiamo passarlo ad una variabile

let giorni = days.join(' / ');
console.log(giorni);
console.log(days);

risultato:

MONDAY / TUESDAY / WEDNESDAY / THURSDAY / FRIDAY / SATURDAY / SUNDAY
["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]

push e unshift

Se voglio aggiungere un elemento alla fine dell’array, lo posso fare con il metodo push

days.push('lunedi');
console.log(days);

Stessa cosa l’unshift aggiunge un valore all’inizio dell’array

days.unshift('LUNDI');
console.log(days);

splice

permette di aggiungere un valore in una posizione specifica dall’array che passo come primo parametro

days.splice(5,0,'sabato');
console.log(days);

il valore ‘sabato’ viene aggiunto dopo il quinto elemento. Il secondo parametro del metodo slice indica quanti elementi voglio eliminare a partire dalla posizione indicata come primo parametro, nel nostro caso zero perchè non voglio eliminare nessun elemento.

Supponiamo di voler eliminare un valore alla posizione 5 e di volerlo memorizzare in una variabile:

let valoreTolto = days.splice(5,1);
console.log(valoreTolto);
console.log(days);

In questo caso non ho inserito nessun valore nel terzo parametro.

Ricapitolando, i parametri del metodo splice si possono descrivere così:

splice(indice , numeriElementiDaTogliere, elementiDaAggiungere);

per aggiungere più elementi basta inserirli come parametri aggiuntivi

let valoreTolto = days.splice(5,1,'test1','test2');

indexOf

per lavorare con splice devo conoscere a priori i valori dell’array e la loro posizione. Qualora non sappia in che posizione si trovi un determinato valore faccio ricorso al metodo indexOf 

let indice = days.indexOf('MONDAY');
let valoreTolto = days.splice(indice,1);
console.log(valoreTolto);
console.log(days);

il valore MONDAY sarà eliminato dall’array days, perchè indexOF mi restituirà la posizione in cui l’ha trovato e splice a partire da quella posizione elimina un elemento

days.splice(indice,1);