Promenade dans la forêt des boucles en JavaScript : For…of, For…in, ForEach et .map

Search for a command to run...

No comments yet. Be the first to comment.
Comprendre les Opérations unwind et lookup dans MongoDB Salut à tous ! Aujourd'hui, on va plonger dans deux fonctionnalités vraiment cool de MongoDB : les opérations unwind et lookup. Si vous avez déjà eu à manipuler des données imbriquées ou à combi...

Faisons la paix entre ESM et CommonJS avec Node.js 22 Salut les développeurs ! Aujourd'hui, on va plonger dans un débat qui anime la communauté Node.js depuis un moment : la différence entre ESM (ECMAScript Modules) et CommonJS. Et devinez quoi ? Nod...

Comment Utiliser Automa pour Automatiser vos Tâches en Ligne ? Salut ! Si tu cherches à rendre tes journées plus productives sans te compliquer la vie, tu as peut-être entendu parler d'Automa. Cet outil pourrait bien devenir ton nouvel allié. Imagine...

Approches globales et spécificités avec NestJS/MongoDB Salut ! Si tu développes des applications utilisant des APIs, notamment avec NestJS et MongoDB, tu sais à quel point un temps de réponse rapide peut améliorer l'expérience utilisateur et rendre t...

Salut, ami développeur ! Aujourd'hui, on va plonger dans le monde fascinant du CSS-in-JS, une pratique qui révolutionne le développement front-end. Prends un café, installe-toi confortablement, et prépare-toi à découvrir pourquoi cette méthode, surto...

Salut, ami codeur ! Aujourd'hui, on va se balader dans la forêt des boucles en JavaScript, un endroit où même les plus chevronnés des développeurs peuvent parfois perdre leur chemin. Pas de panique ! Je suis là pour te guider à travers les sentiers tortueux de for…of, for…in, forEach() et .map(). Prêt pour l'aventure ? C'est parti !
for…inImagine que tu as devant toi un vieux coffre rempli de souvenirs divers (ton objet en JavaScript). Tu veux voir chaque objet un par un, sans te soucier de l'ordre. Le for…in est parfait pour ça. Mais attention ! Ce sentier n'est pas le plus rapide et il pourrait te faire tomber sur des héritages inattendus (les propriétés héritées dans l'objet prototype), donc on l'utilise quand on veut explorer des propriétés d'objets, et pas trop pour les tableaux.
for (let clef in souvenirs) {
console.log(`Voici un souvenir : ${souvenirs[clef]}`);
}
Mais attention aux scénarios d'erreur courants ! Utiliser for…in pour itérer sur les tableaux peut conduire à des résultats inattendus, comme l'itération sur des méthodes et des propriétés non désirées. Ce sentier réserve parfois des surprises avec les objets, alors vérifie bien ton équipement (hasOwnProperty est ton ami) avant de partir à l'aventure !
for…ofEnsuite, on a le for…of, le petit chemin pittoresque qui te fait passer directement par les valeurs de ton tableau. C'est comme ramasser des champignons dans une forêt : tu vas directement à l'essentiel, sans te soucier de savoir à quel arbre ils appartiennent. Parfait pour les tableaux ou les chaînes de caractères quand l'ordre et la valeur sont importants.
for (let valeur of monTableau) {
console.log(`J'ai ramassé : ${valeur}`);
}
Pour ce qui est de la performance et efficacité, for…of est optimisé pour itérer sur des structures de données qui sont itérables par nature. Cela signifie qu'il est souvent plus rapide que for…in et un bon choix pour de grands ensembles de données.
forEach()Imagine maintenant que tu es en cercle avec tes amis, et chacun partage son meilleur tour de magie (fonction de rappel). C'est ça le forEach(). Il est social et amical avec les tableaux, mais il ne sait pas s'arrêter avant la fin de la danse, et il n'aime pas qu'on lui dise de sauter quelqu'un (pas de break ou continue ici).
mesAmis.forEach(ami => {
console.log(`${ami} fait un tour de magie !`);
});
En termes de compatibilité navigateur, forEach() est bien supporté dans toutes les balades modernes, mais si tu rencontres de vieux chemins (IE6-8), tu devras emmener des polyfills pour assurer un passage sans accroc.
.map()Finalement, le .map() est l'artiste qui prend un tableau brut et le transforme en une œuvre d'art (nouveau tableau). Chaque élément passe par son pinceau et ressort transformé. Utilise-le quand tu veux modifier chaque élément d'un tableau et garder un souvenir de chaque transformation.
let oeuvres = tableauxBruts.map(tableau => tableau + ' transformé');
console.log(oeuvres);
N'oublie pas, map() travaille avec des tableaux, mais si tu as besoin d'une plus grande gamme d'outils, les méthodes .filter()et.reduce() sont là pour compléter ta trousse de transformation de données. Elles te permettent de filtrer et de combiner les données en plus de les transformer.
Attention aux chemins asynchrones !
Lorsque tu souhaites faire une promenade asynchrone dans ta forêt de données, tu te rendras compte que forEach() n'attendra pas patiemment que tes promesses soient tenues. Pour ces situations, un for…of accompagné de l'attente async/await est l'équipement idéal pour des itérations asynchrones ordonnées.
async function processArray(array) {
for (const item of array) {
await doSomethingAsync(item);
}
console.log('Done!');
}
async function doSomethingAsync(item) {
// Opération asynchrone, comme une requête réseau
}
Mais prends garde, cette approche n'est pas adaptée pour des opérations simultanées, car elle traitera chaque promesse séquentiellement.
Le tableau de comparaison : lequel choisir ?
Voici un tableau rapide pour t'aider à choisir entre nos boucles selon la situation :
| Méthode | Usage pour les tableaux | Usage pour les objets | Permet l'asynchrone | Support IE8 |
| for...in | ⚠️ (peut-être imprévisible) | ✅ | ❌ | ✅ |
| for...of | ✅ | ❌ (pas directement) | ✅ (avec async/await) | ❌ |
| forEach() | ✅ | ❌ | ❌ | ⚠️ (besoin de polyfill) |
| .map() | ✅ | ❌ | ❌ | ⚠️ (besoin de polyfill) |
Et si tu rencontres des objets itérables autres que les tableaux, comme des NodeList ou des objets créés par des générateurs, alors for…of est ton choix polyvalent pour itérer avec aisance.
Dans le cas où tu dois prendre des chemins anciens et moins battus, pense aux polyfills ou à la transcompilation avec Babel pour assurer que ton code fonctionne partout.
Voilà, ami codeur ! On est revenu à notre point de départ. J'espère que cette balade t'a éclairé sur le moment idéal pour utiliser chaque méthode. N'oublie pas que chaque sentier a son charme, mais choisis bien ton chemin en fonction de ce que tu cherches à explorer ou construire !