Lors d'une itération dans un tableau avec la méthode forEach, il est courant de rencontrer des situations dans lesquelles vous souhaitez modifier les éléments du tableau. Cependant, tenter d'attribuer de nouvelles valeurs directement dans le rappel n'affecte pas toujours le tableau d'origine.
Considérez le code suivant :
var arr = ["one", "two", "three"]; arr.forEach(function(part) { part = "four"; return "four"; }) alert(arr); // Output: "one,two,three"
Malgré le affectation dans le rappel, le tableau d'origine arr renvoie ses valeurs d'origine. Cela se produit car forEach crée une copie superficielle des éléments du tableau pour la fonction de rappel.
Pour modifier les éléments d'un tableau à partir d'une itération forEach, nous devons transmettre le tableau d'origine comme un paramètre supplémentaire. Cela nous permet d'accéder et de modifier directement le tableau lui-même dans le rappel :
arr.forEach(function(part, index, theArray) { theArray[index] = "hello world"; });
En utilisant theArray[index], nous pouvons écraser l'élément du tableau d'origine.
Alternativement, nous pouvons utiliser le deuxième argument de forEach pour définir la valeur this dans le rappel. En définissant ceci sur le tableau d'origine, nous pouvons utiliser this[index] pour modifier les éléments directement :
arr.forEach(function(part, index) { this[index] = "hello world"; }, arr); // Use arr as this
Les deux approches permettent de modifier les éléments du tableau pendant l'itération. Le choix entre les deux dépend des préférences.
Il convient de mentionner que forEach est l'un des nombreux utilitaires de tableau fournis par le prototype Array. D'autres utilitaires couramment utilisés incluent :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!