Itérables JavaScript

Les objets itérables sont des objets qui peuvent être itérés avec for..of
.
Techniquement, les itérables doivent implémenter le Symbol.iterator
méthode.
Itérer sur une chaîne
Vous pouvez utiliser un for..of
boucle pour itérer sur les éléments d’une chaîne :
Exemple
pour (const x de “Infodewi”) {
// bloc de code à exécuter
}
Essayez-le vous-même »
Itérer sur un tableau
Vous pouvez utiliser un for..of
boucle pour itérer sur les éléments d’un tableau :
Exemple
pour (const x de [1,2,3,4,5]) {
// bloc de code à exécuter
}
Essayez-le vous-même »
Itérateurs JavaScript
Le protocole itérateur définit comment produire un séquence de valeurs d’un objet.
Un objet devient un itérateur lorsqu’il met en œuvre un next()
méthode.
Le next()
doit renvoyer un objet avec deux propriétés :
- valeur (la valeur suivante)
- fait (vrai ou faux)
valeur | La valeur renvoyée par l’itérateur (Peut être omis si done est vrai) |
---|---|
fait |
vrai si l’itérateur a terminé FAUX si l’itérateur a produit une nouvelle valeur |
Itérable fait maison
Cet itérable renvoie sans fin : 10,20,30,40, …. À chaque fois
est appelé:
next()
Exemple
// Itérable fait maison
function mesNombres() {
soit n = 0 ;
retour {
suivant : fonction() {
n += 10 ;
renvoie {value:n, done:false} ;
}
} ;
}
// Créer un itérable
const n = myNumbers();
n.suivant(); // Renvoie 10
n.suivant(); // Renvoie 20
n.suivant(); // Renvoie 30
Essayez-le vous-même »
Le problème avec une maison rendue itérable :
Il ne supporte pas le JavaScript for..of
déclaration.
Un itérable JavaScript est un objet qui a un Symbole.itérateur.
Le Symbol.iterator
est une fonction qui retourne un next()
fonction.
Un itérable peut être itéré avec le code : for (const x of iterable) { }
Exemple
// Créer un objet
mesNuméros = {} ;
// Rendre itérable
mesNuméros[Symbol.iterator] = fonction() {
soit n = 0 ;
fait = faux ;
retour {
suivant() {
n += 10 ;
si (n == 100) {fait = vrai}
renvoie {value:n, done:done} ;
}
} ;
}
Maintenant, vous pouvez utiliser for..of
for (const num of myNumbers) {
// N’importe quel code ici
}
Essayez-le vous-même »
La méthode Symbol.iterator est appelée automatiquement par for..of
.
Mais on peut aussi le faire “manuellement”:
Exemple
let iterator = myNumbers[Symbol.iterator]();
tandis que (vrai) {
résultat const = iterator.next();
si (result.done) pause ;
// N’importe quel code ici
}
Essayez-le vous-même »
#Itérables #JavaScript