Array : méthode [Symbol.iterator]()
Baseline
Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis septembre 2016.
La méthode [Symbol.iterator]() des instances de Array implémente le protocole itérable et permet aux tableaux d'être parcourus par la plupart des syntaxes qui attendent un itérable, comme la syntaxe de l'opérateur de propagation et les boucles for...of. Elle retourne un objet itérateur de tableau qui fournit la valeur de chaque indice du tableau.
La valeur initiale de cette propriété est la même fonction que la valeur initiale de la propriété Array.prototype.values.
Exemple interactif
const array = ["a", "b", "c"];
const iterator = array[Symbol.iterator]();
for (const value of iterator) {
console.log(value);
}
// Résultat attendu : "a"
// Résultat attendu : "b"
// Résultat attendu : "c"
Syntaxe
array[Symbol.iterator]()
Paramètres
Aucun.
Valeur de retour
La même valeur de retour que Array.prototype.values() : un nouvel objet d'itérateur itérable qui fournit la valeur de chaque indice du tableau.
Exemples
>Itération avec une boucle for...of
Notez qu'il est rare d'avoir à appeler cette méthode directement. La présence de la méthode [Symbol.iterator]() rend les tableaux itérables, et les syntaxes d'itération comme la boucle for...of appellent automatiquement cette méthode pour obtenir l'itérateur à parcourir.
HTML
<ul id="letterResult"></ul>
JavaScript
const arr = ["a", "b", "c"];
const letterResult = document.getElementById("letterResult");
for (const letter of arr) {
const li = document.createElement("li");
li.textContent = letter;
letterResult.appendChild(li);
}
Résultat
Utiliser manuellement l'itérateur
Vous pouvez toujours appeler manuellement la méthode next() de l'objet itérateur retourné pour avoir un contrôle maximal sur le processus d'itération.
const arr = ["a", "b", "c", "d", "e"];
const arrIter = arr[Symbol.iterator]();
console.log(arrIter.next().value); // a
console.log(arrIter.next().value); // b
console.log(arrIter.next().value); // c
console.log(arrIter.next().value); // d
console.log(arrIter.next().value); // e
Gérer les chaînes de caractères et les tableaux de chaînes avec la même fonction
Puisque les chaînes de caractères et les tableaux implémentent le protocole itérable, il est possible de concevoir une fonction générique pour traiter les deux types d'entrée de la même manière. Cela est préférable à l'appel direct de Array.prototype.values(), qui nécessite que l'entrée soit un tableau ou au moins un objet possédant cette méthode.
function logIterable(it) {
if (typeof it[Symbol.iterator] !== "function") {
console.log(it, "n'est pas itérable.");
return;
}
for (const letter of it) {
console.log(letter);
}
}
// Tableau
logIterable(["a", "b", "c"]);
// a
// b
// c
// Chaîne de caractères
logIterable("abc");
// a
// b
// c
// Nombre
logIterable(123);
// 123 n'est pas itérable.
Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-array.prototype-%symbol.iterator%> |
Compatibilité des navigateurs
Chargement…
Voir aussi
- Guide des collections indexées
- L'objet global
Array - La méthode
Array.prototype.keys() - La méthode
Array.prototype.entries() - La méthode
Array.prototype.values() - La méthode
TypedArray.prototype[Symbol.iterator]() - La méthode
String.prototype[Symbol.iterator]() - La propriété
Symbol.iterator - Protocoles d'itération
- Prothèse d'émulation de
Array.prototype[Symbol.iterator]danscore-js(angl.)