38.4 FOR OF

Un altro metodo per fare un loop ad un array con un ciclo è il metodo FOR OF. Possiamo trasformare un ciclo for in modo più semplice con for of ed è utilizzabile per tutti gli elementi iterabili di js tipo un array, una map, un set. Vediamo l’esempio con un array, partiamo da questo codice HTML

<!DOCTYPE html>
<html>
<head>
    <meta name="description" content="CICLO FOR ESEMPIO">
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <link href="for.css" rel="stylesheet" type="text/css">
    <title>for</title>
</head>
<body>
<div class="main">
    <h1>Programming languages</h1>
    <form id="dati">

    </form>
</div>
<script src="for.js"></script>
</body>
</html>

un po’ di stile

html{
    background:#000;
    color: #fff;
    font-family: Helvetica;
}
h1{
    color :green;
}

adesso passiamo al js, abbiamo questo array

let progLanguages =['C','C++','JAVA','PYTHON','SWIFT','PHP','C SHARP'];

andiamo a memorizzare nella variabile formId l’elemento del <form> con id dati, tramiti getElementById

let formId = document.getElementById('dati');

Inizializziamo queste 3 variabili di servizio

let cont = 0;
let totLang = progLanguages.length;
let htmlContent = '';

ora cicliamo l’array con il ciclo for per inserire il contenuto HTML nel form inserendo anche dei checkbox

for (;cont < totLang; cont ++){
    htmlContent += '<div><input type="checkbox" value="'+progLanguages[cont]+'">'+progLanguages[cont]+'</div>';
}

Infine inseriamo il contenuto con innerHTML

formId.innerHTML = htmlContent;

Vediamo lo stesso esempio utilizzando il for of,  inserito da jsES6 prima di tutto iniziamo col for in cui dobbiamo dichiarare una variabile che andrà a prendere il contenuto dell’array seguito dalla keyword of e l’array interessato

for ( let variabileDiServizio of arrayDaIterare );

nel nostro esempio:

for ( let program of progLanguages ) { ... }

ad ogni iterazione la variabile program prenderà il contenuto di ogni valore dell’array progLanguages

for ( let program of progLanguages ) {
    htmlContent += '<div><input type="checkbox" value="' + program +'">' + program + '</div>';
}

l’effetto finale è lo stesso, ma la leggibilità del codice è migliorata.

For of è da utilizzare solo quando ci interessano solo i valori dell’array e non la chiave.