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 break ou return direct).
  • 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 :

  1. 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é.
  2. thisArg (facultatif) : Une valeur à utiliser comme this lors de l’exécution de callback.

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()

  1. Utilisation claire et simple : .forEach() est idéal pour exécuter des actions mais pas pour transformer un tableau. Pour cela, utilisez .map().
  2. Pas de return : Contrairement à .map(), .forEach() ne retourne pas un tableau. Si vous avez besoin d’un retour, .map() est préférable.
  3. Performance : Pour des tableaux très volumineux, considérez des alternatives comme les boucles for pour des performances optimales.

Limites et pièges courants de la méthode .forEach()

  1. Impossibilité de casser la boucle : Contrairement à une boucle for, il est impossible d’utiliser break dans .forEach().
  2. Gestion asynchrone : .forEach() n’attend pas les promesses. Utilisez une boucle for...of avec await pour 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.

Catégories : Javascript

siddhy

Développeur web full stack depuis 2004 dans une agence web du sud de la France et Geek depuis toujours, l'apprentissage et le partage font parti intégrante de ma philosophie au même titre que l'évolution personnelle et la sagesse bouddhiste.

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 ?

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site est protégé par reCAPTCHA et Google Politique de confidentialité et Conditions d'utilisation appliquer.

La période de vérification reCAPTCHA a expiré. Veuillez recharger la page.