From bf8e099b9c8b3c60d60b3712b4fc97b052c39887 Mon Sep 17 00:00:00 2001 From: julieng Date: Tue, 3 Aug 2021 08:03:23 +0200 Subject: convert content to md --- .../global_objects/array/foreach/index.md | 242 ++++++++++----------- 1 file changed, 109 insertions(+), 133 deletions(-) (limited to 'files/fr/web/javascript/reference/global_objects/array/foreach') diff --git a/files/fr/web/javascript/reference/global_objects/array/foreach/index.md b/files/fr/web/javascript/reference/global_objects/array/foreach/index.md index 1b10baec33..13b7cf4a13 100644 --- a/files/fr/web/javascript/reference/global_objects/array/foreach/index.md +++ b/files/fr/web/javascript/reference/global_objects/array/foreach/index.md @@ -12,107 +12,102 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Array/forEach original_slug: Web/JavaScript/Reference/Objets_globaux/Array/forEach --- -
{{JSRef}}
+{{JSRef}} -

La méthode forEach() permet d'exécuter une fonction donnée sur chaque élément du tableau.

+La méthode **`forEach()`** permet d'exécuter une fonction donnée sur chaque élément du tableau. -
{{EmbedInteractiveExample("pages/js/array-foreach.html")}}
+{{EmbedInteractiveExample("pages/js/array-foreach.html")}} -

Syntaxe

+## Syntaxe -
arr.forEach(callback);
-arr.forEach(callback, thisArg);
+ arr.forEach(callback); + arr.forEach(callback, thisArg); -

Paramètres

+### Paramètres -
-
callback
-
La fonction à utiliser pour chaque élément du tableau. Elle prend en compte trois arguments : -
-
valeurCourante
-
La valeur de l'élément du tableau en cours de traitement.
-
index {{optional_inline}}
-
L'indice de l'élément du tableau en cours de traitement.
-
array {{optional_inline}}
-
Le tableau sur lequel la méthode forEach est appliquée.
-
-
-
thisArg {{optional_inline}}
-
Paramètre optionnel. La valeur à utiliser pour this lors de l'exécution de callback.
-
+- `callback` -

Valeur de retour

+ - : La fonction à utiliser pour chaque élément du tableau. Elle prend en compte trois arguments : -

{{jsxref("undefined")}}.

+ - `valeurCourante` + - : La valeur de l'élément du tableau en cours de traitement. + - `index` {{optional_inline}} + - : L'indice de l'élément du tableau en cours de traitement. + - `array` {{optional_inline}} + - : Le tableau sur lequel la méthode `forEach` est appliquée. -

Description

+- `thisArg` {{optional_inline}} + - : Paramètre optionnel. La valeur à utiliser pour `this` lors de l'exécution de `callback`. -

forEach() exécute la fonction callback une fois pour chaque élément du tableau, dans l'ordre croissant des indices. Cette fonction n'est pas appelée pour les indices pour lesquels les éléments ont été supprimés ou qui n'ont pas été définis. Attention, en revanche elle est appelée pour les éléments qui sont présents et qui valent {{jsxref("undefined")}}.

+### Valeur de retour -

callback est appelé avec trois arguments :

+{{jsxref("undefined")}}. - +## Description -

Si un paramètre thisArg est fourni à la méthode forEach, il sera utilisé en tant que valeur this pour chaque appel de callback. Sinon, ce sera la valeur undefined qui sera utilisée comme valeur this. La valeur this finalement prise en compte par la fonction callback est déterminée selon les règles usuelles pour déterminer la valeur de this utilisée dans une fonction.

+`forEach()` exécute la fonction `callback` une fois pour chaque élément du tableau, dans l'ordre croissant des indices. Cette fonction n'est pas appelée pour les indices pour lesquels les éléments ont été supprimés ou qui n'ont pas été définis. Attention, en revanche elle est appelée pour les éléments qui sont présents et qui valent {{jsxref("undefined")}}. -

L'ensemble des éléments traités par forEach est défini avant le premier appel à callback. Les éléments ajoutés au tableau après que l'appel à forEach ait commencé ne seront pas visités par callback. Si des éléments déjà présents dans le tableau sont modifiés, leur valeur telle qu'elle est passée au callback sera la valeur au moment du passage du forEach ; les éléments supprimés ne sont pas parcourus. Voir l'exemple ci-après.

+`callback` est appelé avec trois arguments : -

forEach() exécute la fonction callback une fois pour chaque élément. À la différence de {{jsxref("Array.prototype.map()", "map()")}} ou de {{jsxref("Array.prototype.reduce()", "reduce()")}} il renvoie toujours la valeur {{jsxref("undefined")}} et ne peut donc pas être « enchaîné ». Généralement, l'effet voulu est de déclencher des effets de bord en fin de chaîne.

+- la valeur de l'élément +- l'index de l'élément +- le tableau utilisé -

forEach() ne modifie pas le tableau sur lequel elle est appelée, en revanche, la fonction de retour (callback) utilisée peut modifier le tableau.

+Si un paramètre `thisArg` est fourni à la méthode `forEach`, il sera utilisé en tant que valeur `this` pour chaque appel de `callback`. Sinon, ce sera la valeur `undefined` qui sera utilisée comme valeur `this`. La valeur `this` finalement prise en compte par la fonction `callback` est déterminée selon [les règles usuelles pour déterminer la valeur de `this` utilisée dans une fonction](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_this). -

Note : Il n'existe aucun moyen d'arrêter une boucle forEach en dehors de lever une exception. Si vous avez besoin d'arrêter la boucle, étudiez plutôt :

+L'ensemble des éléments traités par `forEach` est défini avant le premier appel à `callback`. Les éléments ajoutés au tableau après que l'appel à `forEach` ait commencé ne seront pas visités par `callback`. Si des éléments déjà présents dans le tableau sont modifiés, leur valeur telle qu'elle est passée au `callback` sera la valeur au moment du passage du `forEach` ; les éléments supprimés ne sont pas parcourus. Voir [l'exemple ci-après](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/forEach#Attention_aux_modifications_en_cours). - +`forEach()` exécute la fonction `callback` une fois pour chaque élément. À la différence de {{jsxref("Array.prototype.map()", "map()")}} ou de {{jsxref("Array.prototype.reduce()", "reduce()")}} il renvoie toujours la valeur {{jsxref("undefined")}} et ne peut donc pas être « enchaîné ». Généralement, l'effet voulu est de déclencher des effets de bord en fin de chaîne. -

Les autres méthodes associées aux tableaux ({{jsxref("Array.prototype.every()")}}, {{jsxref("Array.prototype.some()")}}, {{jsxref("Array.prototype.find()")}}, {{jsxref("Array.prototype.findIndex()")}}) utilisent une fonction de texte qui permet de renvoyer une valeur équivalente à true si besoin de poursuivre la boucle.

-
+`forEach()` ne modifie pas le tableau sur lequel elle est appelée, en revanche, la fonction de retour (_callback_) utilisée peut modifier le tableau. -

forEach exécute la fonction callback une fois pour chaque élément ; contrairement à every et some, cette méthode renvoie toujours undefined et ne peut pas être enchaînée.

+> **Note :** Il n'existe aucun moyen d'arrêter une boucle `forEach` en dehors de lever une exception. Si vous avez besoin d'arrêter la boucle, étudiez plutôt : +> +> - Une boucle [`for`](/fr/docs/Web/JavaScript/Reference/Instructions/for) classique +> - Une boucle [`for...in`](/fr/docs/Web/JavaScript/Reference/Instructions/for...in) ou [`for...of`](/fr/docs/Web/JavaScript/Reference/Instructions/for...of) +> - {{jsxref("Array.prototype.every()")}} +> - {{jsxref("Array.prototype.some()")}} +> - {{jsxref("Array.prototype.find()")}} +> - {{jsxref("Array.prototype.findIndex()")}} +> +> Les autres méthodes associées aux tableaux ({{jsxref("Array.prototype.every()")}}, {{jsxref("Array.prototype.some()")}}, {{jsxref("Array.prototype.find()")}}, {{jsxref("Array.prototype.findIndex()")}}) utilisent une fonction de texte qui permet de renvoyer une valeur équivalente à `true` si besoin de poursuivre la boucle. -

Exemples

+`forEach` exécute la fonction `callback` une fois pour chaque élément ; contrairement à `every` et `some`, cette méthode renvoie toujours `undefined` et ne peut pas être enchaînée. -

Équivalence entre une boucle for et une boucle forEach

+## Exemples -

Voici un fragment de code simple qui utilise une boucle for

+### Équivalence entre une boucle `for` et une boucle `forEach` -
var items = ["item1", "item2", "item3"];
+Voici un fragment de code simple qui utilise une boucle `for`
+
+```js
+var items = ["item1", "item2", "item3"];
 var copie = [];
 
-for (var i = 0; i < items.length; i++) {
+for (var i = 0; i < items.length; i++) {
   copie.push(items[i]);
 }
-
+``` -

Et voici un fragment de code équivalent qui utilise forEach :

+Et voici un fragment de code équivalent qui utilise `forEach` : -
var items = ["item1", "item2", "item3"]
+```js
+var items = ["item1", "item2", "item3"]
 var copie = [];
 
 items.forEach(function(item){
   copie.push(item);
-});
+}); +``` -

Afficher le contenu d'un tableau

+### Afficher le contenu d'un tableau -
-

Note : Pour afficher le contenu d'un tableau, on pourra utiliser console.table() qui met en forme les éléments du tableau. L'exemple suivant est laissé à titre d'illustration pour forEach().

-
+> **Note :** Pour afficher le contenu d'un tableau, on pourra utiliser [`console.table()`](/fr/docs/Web/API/Console/table) qui met en forme les éléments du tableau. L'exemple suivant est laissé à titre d'illustration pour `forEach()`. -

Le code suivant affiche une ligne pour chaque élément du tableau :

+Le code suivant affiche une ligne pour chaque élément du tableau : -
function logArrayElements(element, index, array) {
+```js
+function logArrayElements(element, index, array) {
     console.log("a[" + index + "] = " + element);
 }
 [2, 5, , 9].forEach(logArrayElements);
@@ -120,14 +115,14 @@ items.forEach(function(item){
 // a[0] = 2
 // a[1] = 5
 // a[3] = 9
+```
 
-
- -

Utiliser l'argument pour this

+### Utiliser l'argument pour `this` -

Dans l'exemple qui suit, on met à jour les propriétés d'un objet à partir des éléments d'un tableau :

+Dans l'exemple qui suit, on met à jour les propriétés d'un objet à partir des éléments d'un tableau : -
function Compteur() {
+```js
+function Compteur() {
   this.somme = 0;
   this.compte = 0;
 }
@@ -144,27 +139,24 @@ var obj = new Compteur();
 obj.ajouter([2, 5, 9]);
 console.log(obj.compte); // 3
 console.log(obj.somme);  // 16
-
+``` -
-

Note : Le paramètre pour this est passé à la méthode forEach(), à chaque appel du callback, celui-ci sera utilisé comme valeur pour this.

-
+> **Note :** Le paramètre pour `this` est passé à la méthode `forEach()`, à chaque appel du callback, celui-ci sera utilisé comme valeur pour `this`. -
-

Note : Si la fonction passée en argument est une fonction fléchée, il n'est pas nécessaire d'ajouter le paramètre this car les fonctions fléchées utilisent le this fourni par le contexte lexical.

-
+> **Note :** Si la fonction passée en argument est [une fonction fléchée](/fr/docs/Web/JavaScript/Reference/Fonctions/Fonctions_fléchées), il n'est pas nécessaire d'ajouter le paramètre `this` car les fonctions fléchées utilisent le [`this`](/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/L_op%C3%A9rateur_this) fourni par le contexte lexical. -

Stopper une boucle

+### Stopper une boucle -

Le code qui suit utilise la méthode {{jsxref("Array.prototype.every")}} pour afficher le contenu d'un tableau et s'arrêter lorsqu'il atteint une valeur supérieure à SEUIL_MAX.

+Le code qui suit utilise la méthode {{jsxref("Array.prototype.every")}} pour afficher le contenu d'un tableau et s'arrêter lorsqu'il atteint une valeur supérieure à `SEUIL_MAX`. -
var SEUIL_MAX = 12;
+```js
+var SEUIL_MAX = 12;
 var v = [5, 2, 16, 4, 3, 18, 20];
 var res;
 
 res = v.every(function(element, index, array) {
   console.log('élément :', element);
-  if (element >= SEUIL_MAX) {
+  if (element >= SEUIL_MAX) {
     return false;
   }
 
@@ -179,7 +171,7 @@ console.log('res:', res);
 
 res = v.some(function(element, index, array) {
   console.log('élément:', element);
-  if (element >= SEUIL_MAX) {
+  if (element >= SEUIL_MAX) {
     return true;
   }
 
@@ -190,13 +182,15 @@ console.log('res:', res);
 // élément : 5
 // élément : 2
 // élément : 16
-// res: true
+// res: true +``` -

Une fonction de copie d'objet

+### Une fonction de copie d'objet -

Le code qui suit permet de créer une copie d'un objet donné. Il existe différentes façons pour créer une copie d'un objet. L'exemple suivant illustre une de ces façons afin d'expliquer le fonctionnement d'Array.prototype.forEach et d'utiliser les fonctions ECMAScript 5 Object.*.

+Le code qui suit permet de créer une copie d'un objet donné. Il existe différentes façons pour créer une copie d'un objet. L'exemple suivant illustre une de ces façons afin d'expliquer le fonctionnement d'`Array.prototype.forEach` et d'utiliser les fonctions ECMAScript 5 `Object.*`. -
function copie(obj) {
+```js
+function copie(obj) {
   var copie = Object.create(Object.getPrototypeOf(obj));
   var propNames = Object.getOwnPropertyNames(obj);
 
@@ -209,13 +203,15 @@ console.log('res:', res);
 }
 
 var obj1 = { a: 1, b: 2 };
-var obj2 = copie(obj1); // obj2 ressemble désormais à obj1
+var obj2 = copie(obj1); // obj2 ressemble désormais à obj1 +``` -

Attention aux modifications en cours

+### Attention aux modifications en cours -

Dans l'exemple qui suit, on utilise un tableau qui contient quatre élément : "un", "deux", "trois", "quatre". Lorsque le parcours du tableau arrive à l'élément "deux", on décale le tableau d'un cran vers les premiers éléments. Aussi, l'élément "quatre" est décalé à la place de "trois" et "trois" est déplacé à la place de "deux". Pour cette raison, lorsque forEach poursuit son parcours, elle saute la valeur "trois". Autrement dit, forEach n'utilise pas une copie du tableau au moment où elle est appelée, elle manipule le tableau directement. On voit aussi dans cet exemple que les éléments non initialisés ne sont pas traités par la fonction de rappel.

+Dans l'exemple qui suit, on utilise un tableau qui contient quatre élément : `"un"`, `"deux"`, `"trois"`, `"quatre"`. Lorsque le parcours du tableau arrive à l'élément `"deux"`, on décale le tableau d'un cran vers les premiers éléments. Aussi, l'élément `"quatre"` est décalé à la place de `"trois"` et `"trois"` est déplacé à la place de `"deux"`. Pour cette raison, lorsque `forEach` poursuit son parcours, elle saute la valeur "trois". Autrement dit, `forEach` n'utilise pas une copie du tableau au moment où elle est appelée, elle manipule le tableau directement. On voit aussi dans cet exemple que les éléments non initialisés ne sont pas traités par la fonction de rappel. -
var mots = ["un", "deux", "trois",, "quatre"];
+```js
+var mots = ["un", "deux", "trois",, "quatre"];
 mots.forEach(function(mot) {
   console.log(mot);
   if (mot === "deux") {
@@ -224,48 +220,28 @@ mots.forEach(function(mot) {
 });
 // un
 // deux
-// quatre
- -

Spécifications

- - - - - - - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ES5.1', '#sec-15.4.4.18', 'Array.prototype.forEach')}}{{Spec2('ES5.1')}}Définition initiale. Implémentée avec JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.foreach', 'Array.prototype.forEach')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.foreach', 'Array.prototype.forEach')}}{{Spec2('ESDraft')}}
- -

Compatibilité des navigateurs

- -

{{Compat("javascript.builtins.Array.forEach")}}

- -

Voir aussi

- - +// quatre +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- | +| {{SpecName('ES5.1', '#sec-15.4.4.18', 'Array.prototype.forEach')}} | {{Spec2('ES5.1')}} | Définition initiale. Implémentée avec JavaScript 1.6. | +| {{SpecName('ES6', '#sec-array.prototype.foreach', 'Array.prototype.forEach')}} | {{Spec2('ES6')}} | | +| {{SpecName('ESDraft', '#sec-array.prototype.foreach', 'Array.prototype.forEach')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Array.forEach")}} + +## Voir aussi + +- {{jsxref("Array.prototype.filter()")}} +- {{jsxref("Array.prototype.find()")}} +- {{jsxref("Array.prototype.findIndex()")}} +- {{jsxref("Array.prototype.map()")}} +- {{jsxref("Array.prototype.every()")}} +- {{jsxref("Array.prototype.some()")}} +- {{jsxref("Map.prototype.forEach()")}} +- {{jsxref("Set.prototype.forEach()")}} -- cgit v1.2.3-54-g00ecf