En JavaScript, les Iterables sont une structure qui nous permet de parcourir les éléments d’un objet dans un ordre donné. Cette structure est similaire à un tableau, mais contrairement aux tableaux, elle peut être utilisée dans un éventail plus large de contextes.
Les concepts d’Iterable et d’Iterator
Un Iterable est une caractéristique qui indique qu’un objet peut être parcouru de manière séquentielle. Les objets Iterable ont la propriété Symbol.iterator
, qui doit renvoyer un objet Iterator. Un Iterator permet d’effectuer une itération sur un Iterable de manière linéaire. Cet objet Iterator nous permet d’accéder aux éléments un par un à l’aide de la méthode next()
.
Exemples de code :
// Création d'un Array Iterable
const numbers = [1, 2, 3, 4, 5];
// Vérification de l'Iterable
console.log(typeof numbers[Symbol.iterator]); // function
// Création d'un Iterator
const iterator = numbers[Symbol.iterator]();
// Itération avec l'Iterator
console.log(iterator.next()); // { value: 1, done: false }
console.log(iterator.next()); // { value: 2, done: false }
console.log(iterator.next()); // { value: 3, done: false }
console.log(iterator.next()); // { value: 4, done: false }
console.log(iterator.next()); // { value: 5, done: false }
console.log(iterator.next()); // { value: undefined, done: true }
Dans le code ci-dessus, nous avons créé un tableau et avons vérifié sa capacité à être itéré. Ensuite, nous avons utilisé la propriété Symbol.iterator
du tableau pour créer un Iterator et avons itéré sur chaque élément du tableau un par un.
// Création d'un Iterable personnalisé
const myIterable = {
*[Symbol.iterator]() {
yield 1;
yield 2;
yield 3;
}
};
// Création de l'Iterator
const myIterator = myIterable[Symbol.iterator]();
// Itération avec l'Iterator
console.log(myIterator.next()); // { value: 1, done: false }
console.log(myIterator.next()); // { value: 2, done: false }
console.log(myIterator.next()); // { value: 3, done: false }
console.log(myIterator.next()); // { value: undefined, done: true }
Dans cet exemple, nous avons créé un objet Iterable personnalisé et utilisé une fonction générateur pour itérer sur celui-ci. La fonction générateur est marquée par un astérisque (*
) et contient des expressions yield
. Cela nous permet de renvoyer chaque valeur du myIterable
lors de l’itération.
Conclusion
En JavaScript, les Iterables et les Iterators permettent d’itérer de manière efficace sur des objets. Ces structures peuvent être utilisées dans divers types de données et collections, facilitant ainsi l’itération sur les données.