La méthode .forEach() est un outil incontournable pour les développeurs qui souhaitent manipuler des tableaux en JavaScript. Utilisée principalement pour parcourir les éléments d’un tableau, elle simplifie le code et favorise une approche fonctionnelle de la programmation. Dans ce guide complet, nous explorerons sa syntaxe, des exemples pratiques, ses avantages, ainsi que ses limites.
Qu’est-ce que la méthode .forEach() ?
La méthode .forEach() est une fonction native de JavaScript permettant d’exécuter une fonction de rappel sur chaque élément d’un tableau. Contrairement à d’autres méthodes comme .map(), .forEach() n’a pas pour vocation de retourner un nouveau tableau ; elle se concentre uniquement sur l’exécution d’actions sur les éléments existants.
Caractéristiques principales :
- Elle fonctionne uniquement sur les tableaux.
- Elle n’interrompt pas l’itération (pas de
breakoureturndirect). - Son principal objectif est d’exécuter une action pour chaque élément.
Syntaxe de la méthode .forEach()
Voici la structure de base de .forEach() :
array.forEach(callback(currentValue, index, array));
Paramètres :
- callback : Fonction à exécuter pour chaque élément.
- currentValue : L’élément courant du tableau.
- index (facultatif) : L’index de l’élément courant.
- array (facultatif) : Le tableau sur lequel
.forEach()est appelé.
- thisArg (facultatif) : Une valeur à utiliser comme
thislors de l’exécution decallback.
Exemple basique :
const nombres = [1, 2, 3, 4];
nombres.forEach((num) => {
console.log(`Nombre : ${num}`);
});
Output :
Nombre : 1
Nombre : 2
Nombre : 3
Nombre : 4
Explication : La fonction de rappel est exécutée pour chaque élément du tableau nombres. Chaque valeur est affichée dans la console.
Exemples pratiques avec .forEach()
Exemple 1 : Afficher chaque élément d’un tableau
const fruits = ["Pomme", "Banane", "Orange"];
fruits.forEach((fruit) => {
console.log(`Fruit : ${fruit}`);
});
Output :
Fruit : Pomme
Fruit : Banane
Fruit : Orange
Détails : Chaque élément du tableau fruits est passé à la fonction de rappel qui affiche son contenu.
Exemple 2 : Accéder à l’index des éléments
const animaux = ["Chat", "Chien", "Lapin"];
animaux.forEach((animal, index) => {
console.log(`${index} : ${animal}`);
});
Output :
0 : Chat
1 : Chien
2 : Lapin
Détails : En ajoutant un deuxième paramètre à la fonction de rappel, on peut accéder à l’index de chaque élément.
Exemple 3 : Calculer la somme des valeurs d’un tableau
const nombres = [10, 20, 30];
let somme = 0;
nombres.forEach((num) => {
somme += num;
});
console.log(`Somme totale : ${somme}`);
Output :
Somme totale : 60
Détails : La variable somme est mise à jour à chaque itération pour additionner les valeurs du tableau.
Exemple 4 : Modifier les éléments d’un tableau
let scores = [12, 15, 20];
scores.forEach((score, index, array) => {
array[index] = score * 2;
});
console.log(scores);
Output :
[24, 30, 40]
Détails : En utilisant le paramètre array, on peut modifier directement les valeurs du tableau.
Bonnes pratiques avec .forEach()
- Utilisation claire et simple :
.forEach()est idéal pour exécuter des actions mais pas pour transformer un tableau. Pour cela, utilisez.map(). - Pas de
return: Contrairement à.map(),.forEach()ne retourne pas un tableau. Si vous avez besoin d’un retour,.map()est préférable. - Performance : Pour des tableaux très volumineux, considérez des alternatives comme les boucles
forpour des performances optimales.
Limites et pièges courants de la méthode .forEach()
- Impossibilité de casser la boucle : Contrairement à une boucle
for, il est impossible d’utiliserbreakdans.forEach(). - Gestion asynchrone :
.forEach()n’attend pas les promesses. Utilisez une bouclefor...ofavecawaitpour du code asynchrone.
Exemple de mauvaise gestion :
const fetchData = async () => console.log("Donnée chargée");
[1, 2, 3].forEach(async (num) => {
await fetchData();
});
console.log("Fin de la boucle");
Output inattendu :
Fin de la boucle
Donnée chargée
Donnée chargée
Donnée chargée
FAQ sur .forEach() en JavaScript
Qu’est-ce que la méthode .forEach() en JavaScript ?
C’est une méthode utilisée pour parcourir les éléments d’un tableau et exécuter une fonction pour chacun d’eux.
Quels paramètres accepte .forEach() ?
Elle accepte une fonction de rappel avec jusqu’à trois paramètres : currentValue, index, et array.
Peut-on utiliser return dans .forEach() ?
Non, .forEach() ignore la valeur de retour de la fonction de rappel.
Quelle est la différence entre .forEach() et .map() ?
.forEach() exécute une action mais ne retourne rien, alors que .map() retourne un nouveau tableau.
Est-ce que .forEach() fonctionne avec des objets ?
Non, elle est uniquement utilisable avec des tableaux. Pour les objets, utilisez Object.keys() ou Object.entries().
Comment gérer les promesses avec .forEach() ?
Il est préférable d’utiliser une boucle for...of pour attendre les promesses.
Est-ce que .forEach() est plus rapide que for ?
Non, une boucle for est souvent plus rapide dans des cas intensifs.
Comment déboguer une boucle .forEach() ?
Ajoutez des console.log dans la fonction de rappel pour analyser les éléments et les index.
Peut-on imbriquer plusieurs .forEach() ?
Oui, mais cela peut diminuer la lisibilité du code.
Pourquoi .forEach() ne retourne rien ?
Son objectif est d’exécuter des actions, pas de transformer un tableau.
2 commentaires
Bmolloc · 15/04/2025 à 15:28
La bonne pratique concernant forEach (tout comme let), c’est de ne pas l’utiliser 😉
Quelque soit le besoin, ce sera toujours mieux fait avec map, reduce ou for…of
Et ça force à coder propre (fonctions pure, immutabilité, etc…)
siddhy · 15/04/2025 à 16:17
Ahah pas faux. Je suis de ceux qui pensent que pour savoir bien faire il faut savoir ce qu’il ne faut pas faire. (et à mon époque on utilisait each de jQuery donc forEach était déjà une révolution :D)
Pour « let » je n’ai pas la ref par contre ?