Nella lezione precedente, abbiamo visto il ciclo for semplice. Ora, vediamo cosa è e come funziona il ciclo for in. Questo tipo di ciclo permette di iterare tutte le proprietà di un oggetto.
Per creare un ciclo for in, si utilizza la sintassi for(nome in oggetto){ ... }. Ad esempio:
let pc = {
marca: "HP",
modello: "Pavilion",
sistema: "Windows"
}
for(proprieta in pc){
// Istruzioni
}Nell'esempio, troviamo proprieta e pc come parametri all'interno del for. Sono rispettivamente nome e oggetto della sintassi di cui abbiamo parlato prima.
Nota: se non conosci gli oggetti, prova a leggere la lezione dedicata Gli oggetti.
Ecco cosa avviene quando avviamo il ciclo:
marca dell'oggetto pc.proprieta. Nell'esempio, marca diventa proprieta all'interno del for.for.modello dell'oggetto pc.proprieta. Nell'esempio, modello diventa proprieta all'interno del for.for.Il tutto si ripete per il numero di proprietà all'interno dell'oggetto.
All'interno del blocco for in, il nome della proprietà dell'oggetto scelto è visibile. Ad esempio:
let pc = {
marca: "HP",
modello: "Pavilion",
sistema: "Windows"
}
for(proprieta in pc){
alert(proprieta);
// Risultato: "marca"
// Risultato: "modello"
// Risultato: "sistema"
}Per accedere ai valori dell'oggetto, puoi usare la sintassi degli oggetti: oggetto[proprieta].
let pc = {
marca: "HP",
modello: "Pavilion",
sistema: "Windows"
}
for(proprieta in pc){
alert(pc[proprieta]);
// Risultato: "HP"
// Risultato: "Pavilion"
// Risultato: "Windows"
}Puoi utilizzare questo ciclo anche per altri tipi di variabile. La sintassi e il funzionamento rimane uguale. Vediamo come funziona.
let numeri = [43, 12, 29, 10, 33];
for(proprieta in numeri){
alert(numeri[proprieta]);
// Risultato: 43
// Risultato: 12
// ...
}let linguaggio = "JavaScript";
for(proprieta in linguaggio){
alert(linguaggio[proprieta]);
// Risultato: "J"
// Risultato: "a"
// ...
}Per terminare un ciclo, si può utilizzare break.
let linguaggio = "JavaScript";
for(proprieta in linguaggio){
alert(linguaggio[proprieta]);
// Risultato: "J"
// Risultato: "a"
// Risultato: "v"
if(linguaggio[proprieta] == "v"){
// Se la lettera è la "v", il ciclo si ferma
break;
}
}Nell'esempio, vogliamo fermare il ciclo quando incontriamo la lettera "v".