38.3 foreach
Spighiamo il foreach con un esempio pratico, dato il seguente file HTML
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<title>foreach</title>
<script src="foreach.js"></script>
</head>
<body>
<h1>foreach Cities</h1>
<div id="city"></div>
<script src="foreach.js"></script>
</body>
</html>
abbiamo inserito un <div> con id city inseriamo nel file foreach.js un array cities contenente oggetti con città e regioni
let cities = [
{ name: 'TORINO' , reg: 'PIE' } ,
{ name: 'ASTI' , reg: 'PIE' } ,
{ name: 'MILANO' , reg: 'LOM' } ,
{ name: 'COMO' , reg: 'LOM' }
];
l’obbiettivo è quello di ciclare l’array city e inserire i dati nel <div> id=city, quindi memorizziamo il riferimento ad esso con getElementById
let city = document.getElementById('city');
inoltre creo un elemento <ul> con createElement
let ul = document.createElement('ul');
ora utilizzo il forEach sull’array cities che riceve gli stessi parametri della funzione filter, anche in questo ci interessa solo il primo parametro ele, per inserire le città dentro a degli <li>
cities.forEach( function (ele) {
let li = document.createElement('li');
});
La funzione forEach esegue la funzione che passiamo come parametro per tutti gli elementi dell’array che siano dettati, cioè diversi da UNDEFINED oppure oggetti con chiavi eliminate.
Adesso dentro ogni <li> inserisco il nome delle città che vengono passate dal parametro ele, con innerHTML
li.innerHTML = ele.name;
Infine inserisco (appiccico) ogni <li> creato alla lista <ul> con appendChild
ul.appendChild(li);
Ora che col foreach ho creato tutta la mia lista posso inserirla nel <div> city
city.appendChild(ul);
Ho costruito e inserito nella pagina web la lista delle città recuperate da un array, ecco il codice completo:
let cities = [
{ name: 'TORINO' , reg: 'PIE' } ,
{ name: 'ASTI' , reg: 'PIE' } ,
{ name: 'MILANO' , reg: 'LOM' } ,
{ name: 'COMO' , reg: 'LOM' }
];
let city = document.getElementById('city');
let ul = document.createElement('ul');
cities.forEach( function (ele) {
let li = document.createElement('li');
li.innerHTML = ele.name;
ul.appendChild(li);
});
city.appendChild(ul);
Se per esempio volessi ciclare solo le variabili del Piemonte, aggiungo una variabile pieCities che conterrà i dati estratti dall’array con la funzione filter .
let pieCities = cities.filter( v => v.reg == 'PIE');
Si noti l’uso della funzione freccia usata come parametro di filter e l’uso del doppio uguale ( == ).
A questo punto sarà sufficiente ciclare col forEach la variabile pieCities
let ul = document.createElement('ul');
let pieCities = cities.filter( v => v.reg == 'PIE');
pieCities.forEach( function (ele) {
let li = document.createElement('li');
li.innerHTML = ele.name;
ul.appendChild(li);
});
city.appendChild(ul);
allo stesso modo posso fare con le città della Lombardia
let pieCities = cities.filter( v => v.reg == 'LOM');