login LOGIN
CHIUDI chiudi
Il mio profilo

mostra
Hai dimenticato la password?
Inserisci l'indirizzo email di registrazione per reimpostare la password.
Segui le istruzioni che ti abbiamo inviato per posta elettronica.

Come funziona il ciclo Foreach o Loop Foreach

Il ciclo Foreach è un'istruzione di flusso di controllo per attraversare gli elementi in una raccolta. Di solito è usato al posto di uno standard per l'istruzione loop

JavaScript è uno dei linguaggi di programmazione più usati al mondo, nell’olimpo dei grandi comeC, C++, Java, PHP e Python, il principale per lo sviluppo di web applications. Sempre più diffuso, tocca gli ambienti mobile, server e desktop ed è alla base del funzionamento di molti siti e servizi online che usiamo quotidianamente.

In Javascript, forEach è un metodo dell'oggetto Array che consente di ciclare tutti gli elementi contenuti in esso percorrendolo in senso discendente (da 1 a n). A tutti gli effetti si tratta di una iterazione definita associando una funzione di callback che deve essere eseguita ad ogni step.

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(). Vediamo cosa sono e come impostare i cicli su JavaScript.

  • 1. Cosa sono i controlli di flusso e a cosa servono
    Programmare

    Shutterstock

    Il controllo di flusso rappresenta l’ordine con cui le istruzioni sono eseguite all’interno di un programma. Quest’ordine, in alcuni casi, può subire variazioni da specifiche strutture dette “di controllo” che modificano il flusso di esecuzione del codice attraverso condizioni logiche che tipicamente restituiscono un valore booleano (true o false), oppure delle iterazioni (o loop) che continuano finché la condizione non sarà false. 

    Le istruzioni condizionali consentono di eseguire blocchi di codice alternativi in base ad una condizione. La forma if esegue un blocco di codice solo se una condizione è vera; l'if...else prevede l’esecuzione di un blocco di codice oppure un altro in base al valore della condizione; l'if..else if...else o if a cascata mette a disposizione più alternative di esecuzione.

    Un'altra categoria di istruzioni riguarda le iterazioni o cicli che permettono di eseguire specifiche operazioni (blocchi di codice) in loop N volte, dove N è un numero definito nel caso del ciclo for oppure che potrebbe ripetersi anche all’infinito come nel caso del while finché l’istruzione di controllo (condizione booleana) rimane vera.

    In generale il while è da utilizzare nei casi in cui non sappiamo quando il loop debba terminare. E mentre il while controlla subito se la condizione è vera o falsa, il do-while fa il controllo solo dopo aver eseguito il blocco di istruzioni almeno una volta.

  • 2. Ciclo for e forEach a confronto
    Ciclp for e foreach esempi

    Screenshot Fastweb Plus

    Esistono istruzioni molto più avanzate per gestire loop in JavaScript, ad esempio nel caso di un array si può optare per il forEach e nel caso di un oggetto metodi nativi come Object.keys() (introdotto con ES6) oppure il classico for...in.

    Chiariamo il concetto con un esempio.

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

    // utilizzo for() for (i=0; i < miaArray.length; i++); }

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

    Il risultato prodotto tramite il ciclo for() e forEach() sarà il medesimo.

    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 + '
    '); })

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

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

    E' importante sottolineare che non è stato previsto un modo per interrompere un loop forEach(). Se si necessita di un comportamento di questo tipo è consigliabile ricorrere ad un normale loop e non un forEach().

    Alternativamente al metodo forEach() di Javascript è possibile utilizzare jQuery:

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

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

  • 3. Il ciclo forEach in PHP
    Ciclo foreach in php

    Screenshot Fastweb Plus

    In PHP foreach è utilizzato per ciclare ogni coppia di chiavi/valori degli array associativi senza effettuare controlli sulla loro dimensione e si occuperà automaticamente di terminare il ciclo quando tutti gli elementi sono stati processati.

    Un esempio che calcola la somma degli elementi di un array:

    $array_monodimensionale = array(1, 2, 3, 4, 5); $somma = 0; foreach ($array_monodimensionale as $valore) { $somma += $valore; } echo "La somma degli elementi dell'array è: " . $somma;

    Il costrutto dopo la parola chiave foreach include all'interno delle parentesi tonde tre elementi: l'array da ciclare; la parola chiave as; la variabile che contiene il valore dell'indice corrente. Il codice da eseguire ad ogni iterazione è all'interno delle parentesi graffe.

    Per un array multidimensionale, la sintassi è la stessa con la differenza che si utilizzano due variabili: la variabile che identifica l'indice dell'array (nel nostro caso il nome dell'utente) e la variabile che identifica il valore dell'indice (nel nostro caso l'età):

    $eta_utenti = array( 'Simone' => 29, 'Josephine' => 30, 'Giuseppe' => 23, 'Renato' => 26 );

    $somma_eta = 0; foreach ($eta_utenti as $nome => $eta) { echo "L'utente " . $nome . " ha " . $eta . " anni\n"; $somma_eta += $eta; } echo "La somma delle età degli utenti è: " . $somma_eta;

    Per saperne di più: A cosa serve Javascript e come imparare a programmarlo

A cura di Cultur-e
Prompt engineering
Immagine principale del blocco
Prompt engineering
Fda gratis svg
Come interrogare le intelligenze artificiali
Iscriviti al corso gratuito

Iscriviti
all'area personale

Per ricevere Newsletter, scaricare eBook, creare playlist vocali e accedere ai corsi della Fastweb Digital Academy a te dedicati.