| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach | [Back] [Original] |
Get to know MDN better
Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.
Cette fonctionnalit est bien tablie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
La mthode forEach() des instances de Array excute une fonction fournie une fois pour chaque lment du tableau.
const array = ["a", "b", "c"];
array.forEach((element) => console.log(element));
// Sortie attendue : "a"
// Sortie attendue : "b"
// Sortie attendue : "c"
forEach(callbackFn)
forEach(callbackFn, thisArg)
callbackFnLa fonction excuter pour chaque lment du tableau. Sa valeur de retour est ignore. La fonction est appele avec les arguments suivants :
thisArg FacultatifLa valeur utiliser comme this lors de l'excution de la fonction callbackFn. Voir les mthodes itratives.
Aucune (undefined).
La mthode forEach() est une mthode itrative. Elle appelle la fonction callbackFn fournie une fois pour chaque lment du tableau, dans l'ordre croissant des indices. Contrairement map(), forEach() retourne toujours undefined et ne peut pas tre chane. L'usage typique est d'excuter des effets de bord la fin d'une chane de caractres. Consultez la section mthodes itratives pour plus d'informations sur le fonctionnement gnral de ces mthodes.
La fonction callbackFn est appele uniquement pour les indices du tableau qui ont une valeur attribue. Elle n'est pas appele pour les cases vides dans un tableau creux.
La mthode forEach() est gnrique. Elle attend seulement que la valeur de this possde une proprit length et des proprits cls entires.
Il n'existe aucun moyen d'arrter ou de sortir d'une boucle forEach() autrement qu'en lanant une exception. Si vous avez besoin de ce comportement, la mthode forEach() n'est pas adapte.
L'arrt anticip peut tre ralis avec des instructions de boucle comme for, for...of et for...in. Les mthodes de tableau comme every(), some(), find(), et findIndex() arrtent aussi l'itration ds que ce n'est plus ncessaire.
forEach() attend une fonction synchrone elle n'attend pas les promesses. Veillez bien comprendre les implications de l'utilisation de promesses (ou de fonctions asynchrones) comme fonctions de rappel de forEach.
const notes = [5, 4, 5];
let somme = 0;
const fonctionSommeAsync = async (a, b) => a + b;
notes.forEach(async (note) => {
somme = await fonctionSommeAsync(somme, note);
});
console.log(somme);
// Sortie attendue : 14
// Sortie relle : 0
Pour excuter une srie d'oprations asynchrones squentiellement ou en concurrence, voir la section composition de promesses.
for en forEachconst elements = ["lment 1", "lment 2", "lment 3"];
const elementsCopie = [];
// avant
for (let i = 0; i < elements.length; i++) {
elementsCopie.push(elements[i]);
}
// aprs
elements.forEach((element) => {
elementsCopie.push(element);
});
Note :
Pour afficher le contenu d'un tableau dans la console,
vous pouvez utiliser console.table(), qui affiche une version mise en forme du tableau.
L'exemple suivant illustre une autre approche, utilisant
forEach().
Le code suivant affiche une ligne pour chaque lment d'un tableau :
const logArrayElements = (element, index /*, array */) => {
console.log(`a[${index}] = ${element}`);
};
// Remarquez que l'indice 2 est ignor, car il n'y a pas d'lment cette position dans le tableau.
[2, 5, , 9].forEach(logArrayElements);
// Affiche :
// a[0] = 2
// a[1] = 5
// a[3] = 9
thisArgL'exemple (artificiel) suivant met jour les proprits d'un objet partir de chaque entre du tableau :
class Compteur {
constructor() {
this.somme = 0;
this.compte = 0;
}
ajouter(tableau) {
// Seules les expressions de fonction possdent leur propre liaison this.
tableau.forEach(function compterEntree(entree) {
this.somme += entree;
++this.compte;
}, this);
}
}
const obj = new Compteur();
obj.ajouter([2, 5, 9]);
console.log(obj.compte); // 3
console.log(obj.somme); // 16
Puisque le paramtre thisArg (this) est fourni
forEach(), il est transmis callback chaque appel.
La fonction de rappel l'utilise comme valeur de this.
Note :
Si la fonction de rappel passe tait une fonction flche, le paramtre thisArg peut tre omis, car toutes les fonctions flches lient lexicalement la valeur de this.
Le code suivant cre une copie d'un objet donn.
Il existe diffrentes manires de copier un objet. Ce qui suit n'est qu'une faon de faire et est prsent pour expliquer le fonctionnement de Array.prototype.forEach() en utilisant les fonctions utilitaires Object.*.
const copie = (objet) => {
const copie = Object.create(Object.getPrototypeOf(objet));
const nomsProp = Object.getOwnPropertyNames(objet);
nomsProp.forEach((nom) => {
const desc = Object.getOwnPropertyDescriptor(objet, nom);
Object.defineProperty(copie, nom, desc);
});
return copie;
};
const obj1 = { a: 1, b: 2 };
const obj2 = copie(obj1); // obj2 est identique obj1 maintenant
L'exemple suivant est uniquement prsent des fins d'apprentissage. Si vous souhaitez aplatir un tableau en utilisant des mthodes intgres, vous pouvez utiliser Array.prototype.flat().
const aplatir = (arr) => {
const resultat = [];
arr.forEach((item) => {
if (Array.isArray(item)) {
resultat.push(...aplatir(item));
} else {
resultat.push(item);
}
});
return resultat;
};
// Utilisation
const imbrique = [1, 2, 3, [4, 5, [6, 7], 8, 9]];
console.log(aplatir(imbrique)); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
callbackFnL'argument array est utile si vous souhaitez accder un autre lment du tableau, en particulier lorsque vous n'avez pas de variable existante qui fait rfrence au tableau. L'exemple suivant utilise d'abord filter() pour extraire les valeurs positives, puis utilise forEach() pour afficher ses voisins.
const nombres = [3, -1, 1, 4, 1, 5];
nombres
.filter((num) => num > 0)
.forEach((num, idx, arr) => {
// Sans l'argument arr, il n'y a aucun moyen d'accder facilement au tableau intermdiaire sans le stocker dans une variable.
console.log(arr[idx - 1], num, arr[idx + 1]);
});
// undefined 3 1
// 3 1 4
// 1 4 1
// 4 1 5
// 1 5 undefined
forEach() sur les tableaux creuxconst tableauCreux = [1, 3, /* vide */, 7];
let nombreAppelsCallback = 0;
tableauCreux.forEach((element) => {
console.log({ element });
nombreAppelsCallback++;
});
console.log({ nombreAppelsCallback });
// { element: 1 }
// { element: 3 }
// { element: 7 }
// { nombreAppelsCallback: 3 }
La fonction de rappel n'est pas appele pour la valeur manquante l'indice 2.
forEach() sur des objets ressemblant des tableauxLa mthode forEach() lit la proprit length de this puis accde chaque proprit dont la cl est un entier non ngatif infrieur length.
const objetSimilaireTableau = {
length: 3,
0: 2,
1: 3,
2: 4,
3: 5, // ignor par forEach(), car length vaut 3
};
Array.prototype.forEach.call(objetSimilaireTableau, (x) => console.log(x));
// 2
// 3
// 4
| Spcification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-array.prototype.foreach |
ArrayArray.prototype.find()Array.prototype.map()Array.prototype.filter()Array.prototype.every()Array.prototype.some()TypedArray.prototype.forEach()Map.prototype.forEach()Set.prototype.forEach()Array.prototype.forEach dans core-js (angl.)Array.prototype.forEach (angl.)Cette page a t modifie le 19 aot 2026 par les contributeurices du MDN.
Arrayat()concat()copyWithin()entries()every()fill()filter()find()findIndex()findLast()findLastIndex()flat()flatMap()forEach()includes()indexOf()join()keys()lastIndexOf()map()pop()push()reduce()reduceRight()reverse()shift()slice()some()sort()splice()toLocaleString()toReversed()toSorted()toSpliced()toString()unshift()values()with()[Symbol.iterator]()Object/FunctionObject.prototype.__defineGetter__()Object.prototype.__defineSetter__()Object.prototype.__lookupGetter__()Object.prototype.__lookupSetter__()Object.prototype.hasOwnProperty()Object.prototype.isPrototypeOf()Object.prototype.propertyIsEnumerable()Object.prototype.toLocaleString()Object.prototype.toString()Object.prototype.valueOf()Certaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |