Ar

Array in JavaScript

49 esercizi

Informazioni su Array

In JavaScript, un array è una struttura simile a una lista, senza lunghezza fissa, che può contenere qualsiasi tipo di primitivo o oggetto, anche di tipi misti. Include la proprietà length e anche tanti metodi utili per attraversare e modificare l'array.

Per creare un array, aggiungi gli elementi tra parentesi quadre []. Per leggere da un array, metti l'indice tra parentesi quadre [] dopo l'identificatore. Gli indici di un array partono da zero.

Per esempio:

const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names[1];
// => Laura

Gli array si possono creare anche usando la sintassi del costruttore, ma nella maggior parte dei casi è consigliata la sintassi letterale.

const names = new Array();
names.push('Jack', 'Laura', 'Paul', 'Megan');

names[1];
// => Laura

Gli array non possono usare delle strings come indici degli elementi, ma devono usare numeri interi (number). Impostare o accedere tramite valori non interi, usando la notazione con parentesi quadre (o la notazione con il punto), non imposta né recupera un elemento dalla lista dell'array vera e propria, ma imposta o accede a una variabile associata all'insieme di proprietà dell'oggetto di quell'array. Le proprietà dell'oggetto array e la lista degli elementi dell'array sono separate, e le operazioni di attraversamento e modifica dell'array non possono essere applicate a queste proprietà con nome.

const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.length;
// => 4

// Properties can be set on arrays using bracket ['property'] or
// dot .property notation, and this will affect the length, as
// shown below.

names.magician = 'Elyse';
names.length;
// => 4

// The property shows up when logging the array, making it seem
// that the property is somehow incorporated in the array.

names;
// => ["Jack", "Laura", "Paul", "Megan", magician: "Elyse"]

// However, be aware. Properties added via non-numeric keys are
// NOT part of the array's internal list, and are not traversed
// or mutated when using one of the traversal or mutation
// operations.

names.forEach((name) => console.log(name));
// => Jack
// => Laura
// => Paul
// => Megan

Eliminare elementi da un array

Gli array in JavaScript sono dei normali objects, e gli elementi si possono eliminare usando la parola chiave delete. Tuttavia, questo non cambia la lunghezza dell'array e lascia un buco empty. In altri linguaggi, questo è simile a un array sparso. I buchi empty vengono saltati quando si usano le operazioni di attraversamento o modifica.

const names = ['Jack', 'Laura', 'Paul', 'Megan'];
delete names[1];

names;
// =>  ["Jack", empty, "Paul", "Megan"]

names.length;
// => 4

names.forEach((name) => console.log(name));
// => Jack
// => Paul
// => Megan

Se non devono esserci buchi, e se length deve riflettere il numero di elementi che verranno attraversati o modificati, usa invece splice.

Il metodo splice() cambia il contenuto di un array rimuovendo o sostituendo elementi esistenti e/o aggiungendo nuovi elementi sul posto.1

Per esempio:

const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.splice(1, 1);

names;
// =>  ["Jack", "Paul", "Megan"]

names.length;
// => 3

names.forEach((name) => console.log(name));
// => Jack
// => Paul
// => Megan

La lunghezza di un array può essere modificata

La proprietà length di un array è collegata alla lista degli elementi che l'array contiene. Può essere modificata. Quando la lunghezza aumenta, crea dei buchi empty, che non vengono considerati durante l'attraversamento o la modifica dell'array. Quando la lunghezza diminuisce, rimuove gli elementi alla fine dell'array.

const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.length = 6;

names;
// => ["Jack", "Laura", "Paul", "Megan", empty × 2]

names.length = 2;
// =>  ["Jack", "Laura"]

Verificare se qualcosa è un array

Poiché gli array sono degli objects, typeof names restituisce "object". Per verificare se qualcosa è un array, usa Array.isArray:

const names = ['Jack', 'Laura', 'Paul', 'Megan'];

typeof names;
// => "object"

Array.isArray(names);
// => true

const object = {};
Array.isArray(object);
// => false

Potresti essere tentato di usare names instanceof Array, e in effetti può funzionare, ma non in tutte le circostanze. Leggi questo articolo per saperne di più.

Metodi degli array

Alcuni dei metodi disponibili su ogni oggetto array si possono usare per aggiungere o rimuovere elementi dall'array. Eccone alcuni:

push

Il metodo push() aggiunge uno o più elementi alla fine di un array e restituisce la nuova lunghezza dell'array.2

const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.push('Jill'); // => 5
names;
// => ['Jack', 'Laura', 'Paul', 'Megan', 'Jill']

pop

Il metodo pop() rimuove l'ultimo elemento da un array e restituisce quell'elemento. Questo metodo cambia la lunghezza dell'array.3

const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.pop(); // => 'Megan'
names;
// => ['Jack', 'Laura', 'Paul']

shift

Il metodo shift() rimuove il primo elemento da un array e restituisce quell'elemento rimosso. Questo metodo cambia la lunghezza dell'array.4

const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.shift(); // => 'Jack'
names;
// => ['Laura', 'Paul', 'Megan']

unshift

Il metodo unshift() aggiunge uno o più elementi all'inizio di un array e restituisce la nuova lunghezza dell'array.5

const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.unshift('Jill'); // => 5
names;
// => ['Jill', 'Jack', 'Laura', 'Paul', 'Megan']

splice

Il metodo splice() cambia il contenuto di un array rimuovendo o sostituendo elementi esistenti e/o aggiungendo nuovi elementi sul posto. Questo metodo restituisce un array contenente gli elementi eliminati.1

const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.splice(2, 1, 'Jill'); // => ['Paul']
names;
// => ['Jack', 'Laura', 'Jill', 'Megan']

  1. splice, MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice (consultato il 29 settembre 2021) ↩

  2. push, MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push (consultato il 29 settembre 2021) ↩

  3. pop, MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop (consultato il 29 settembre 2021) ↩

  4. shift, MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift (consultato il 29 settembre 2021) ↩

  5. unshift, MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift (consultato il 29 settembre 2021) ↩

Modifica tramite GitHub Il collegamento si apre in una nuova finestra o scheda

Impara Array