back to top

Javascript Foreach: cos’è e come funziona

In Javascript, forEach รจ un metodo dell’oggetto Array che consente di ciclare tutti gli elementi contenuti in un array. Il supporto al metodo forEach รจ stato introdotto con ECMAScript 5 (2011). Prima di tale innovazione, il linguaggio Javascript non disponeva di un vero e proprio metodo forEach e per effettuare l’iterazione di un vettore era necessario ricorrere, ad esempio, al ciclo for().

var miaArray = ['Pippo', 'Pluto', 'Topolino'];

// utilizzo for()
for (var i = 0; i < miaArray.length; i++) {
  document.write(miaArray[i] + '<br>');
}

// utilizzo forEach()
miaArray.forEach(function (item) {
  document.write(item + '<br>');
});

Il risultato prodotto tramite il ciclo for() e forEach() sarร  il medesimo. Tuttavia, il metodo forEach() offre una sintassi piรน pulita e concisa, rendendo il codice piรน leggibile.

Pubblicitร 

Attraverso il metodo forEach() posso passare, oltre al valore dell’elemento corrente, anche il suo indice:

miaArray.forEach(function (item, index) {
  document.write(index + ' - ' + item + '<br>');
});

Si noti che negli esempi sopra riportati abbiamo sempre fatto ricorso a una funzione anonima, ma nulla ci vieta di definire come callback una funzione, come nell’esempio che segue:

function mostraRisultati(item, index) {
  document.write(index + ' - ' + item + '<br>');
}

miaArray.forEach(mostraRisultati);

รˆ importante sottolineare che non รจ stato previsto un modo per interrompere un loop forEach(). Se si necessita di un comportamento di questo tipo, รจ consigliabile ricorrere a un normale loop e non a forEach(). In alternativa, si possono utilizzare metodi come Array.prototype.every() o Array.prototype.some() che permettono di uscire dal ciclo in base a determinate condizioni.

Alternativamente al metodo forEach() di Javascript, รจ possibile utilizzare jQuery:

var miaArray = ['Pippo', 'Pluto', 'Topolino'];
$.each(miaArray, function() {
  document.write(this + '<br>');
});

Compatibilitร 

Essendo stato introdotto con ES5, il metodo forEach() non puรฒ considerarsi pienamente cross-browser in quanto non รจ supportato, ad esempio, sulle vecchie versioni di Internet Explorer (quelle precedenti alla 9). Pertanto, per garantire una maggiore compatibilitร , รจ importante tenere presente le versioni dei browser utilizzati dagli utenti.

Per garantire la compatibilitร  con browser piรน vecchi, รจ possibile ricorrere a polyfill o implementazioni alternative. Ecco un esempio di polyfill per forEach:

if (!Array.prototype.forEach) {
  Array.prototype.forEach = function(callback, thisArg) {
    if (this == null) {
      throw new TypeError('this is null or not defined');
    }
    var O = Object(this);
    var len = O.length >>> 0; // convert to a uint32
    for (var i = 0; i < len; i++) {
      if (i in O) {
        callback.call(thisArg, O[i], i, O);
      }
    }
  };
}

In conclusione, il metodo forEach รจ uno strumento utile per iterare attraverso un array in modo semplice e leggibile. Tuttavia, รจ essenziale essere a conoscenza delle sue limitazioni, come l’impossibilitร  di interrompere il ciclo, e considerare l’implementazione di alternative o compatibilitร  per progetti destinati a un vasto pubblico.

Altri contenuti interessanti

Pubblicitร 

Potrebbero interessarti queste guide

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).

Leggi anche...

Bloccare lโ€™orientamento di una pagina web su smartphone: come forzare la modalitร  portrait o landscape

Nellโ€™era mobile-first, lโ€™esperienza utente sui dispositivi mobili รจ un...

Numeri Random in JavaScript

La generazione di numeri random (numeri casuali) รจ unโ€™operazione...

Infinite scroll, come programmarlo su AMP e su Web con Javascript

L'infinite scroll รจ una tecnica di design e navigazione...

Codice Fiscale: 5 javascript per la verifica e il calcolo

Il codice fiscale รจ un identificativo tributario univoco che...

Math.ceil() – Arrotondare per eccesso con Javascript

Il metodo ceil() dell'oggetto Math di Javascript è utilizzato...

Minificare Javascript: librerie e strumenti online per comprimere il sorgente JS

La minificazione è un processo abbastanza diffuso nell'implementazione delle...
Pubblicitร