Introduction
Dans ce laboratoire, nous allons explorer le concept d'itérateurs et de générateurs en JavaScript. Plus précisément, nous allons nous concentrer sur la création d'un itérateur plat qui peut itérer sur des tableaux et des ensembles imbriqués, et les aplatir en un seul itérable. Cela nous permettra d'accéder et de manipuler efficacement des structures de données imbriquées de manière plus fluide. À la fin du laboratoire, vous aurez une compréhension plus approfondie de la manière dont les générateurs et les itérateurs fonctionnent, et de la manière dont ils peuvent être appliqués pour résoudre des problèmes du monde réel.
Explications sur l'itérateur plat
Pour créer un générateur qui itère sur un itérable et aplatit les itérables imbriqués, suivez ces étapes :
- Ouvrez le Terminal/SSH et tapez
nodepour commencer à pratiquer la programmation. - Utilisez la récursivité dans la fonction génératrice.
- Utilisez une boucle
for...ofpour itérer sur les valeurs de l'itérateur donné. - Utilisez
Symbol.iteratorpour vérifier si chaque valeur est un itérable. - Si c'est le cas, utilisez l'expression
yield*pour déléguer de manière récursive à la même fonction génératrice. - Sinon,
yieldla valeur actuelle.
Voici un extrait de code d'exemple :
const flatIterator = function* (itr) {
for (let item of itr) {
if (item[Symbol.iterator]) yield* flatIterator(item);
else yield item;
}
};
const arr = [1, 2, [3, 4], [5, [6, [7], 8]], 9, new Set([10, 11])];
[...flatIterator(arr)]; // 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
Dans l'exemple, arr est un tableau de valeurs, y compris des tableaux imbriqués et un ensemble. La fonction génératrice flatIterator est utilisée pour aplatir ces valeurs imbriquées et renvoyer un tableau aplati.
Sommaire
Félicitations ! Vous avez terminé le laboratoire sur l'itérateur plat. Vous pouvez pratiquer d'autres laboratoires sur LabEx pour améliorer vos compétences.