Maison > interface Web > js tutoriel > Pourquoi la modification des éléments du tableau dans une boucle forEach en JavaScript ne modifie-t-elle pas le tableau d'origine ?

Pourquoi la modification des éléments du tableau dans une boucle forEach en JavaScript ne modifie-t-elle pas le tableau d'origine ?

DDD
Libérer: 2024-11-30 22:25:14
original
982 Les gens l'ont consulté

Why does modifying array elements within a forEach loop in JavaScript not change the original array?

Modification des valeurs d'un tableau pendant l'itération

En JavaScript, la méthode forEach() est couramment utilisée pour parcourir un tableau et effectuer certaines actions sur chaque élément. Cependant, les tentatives de modification de ces éléments dans la boucle d'itération entraînent souvent la préservation des valeurs d'origine.

Considérons l'exemple suivant :

var arr = ["one", "two", "three"];

arr.forEach(function (part) {
  part = "four";
  return "four";
});

alert(arr); // Output: ["one", "two", "three"]
Copier après la connexion

Malgré l'attribution de « quatre » à la partie dans la boucle , le tableau arr reste inchangé. En effet, le rappel forEach() ne reçoit qu'une copie de chaque élément, pas une référence à l'élément d'origine.

Modifier des éléments avec l'index de tableau

Pour réaliser des modifications significatives, nous pouvons utiliser le paramètre d'index fourni par le rappel forEach(). Ce paramètre représente l'index de l'élément actuel dans le tableau :

arr.forEach(function (part, index, theArray) {
  theArray[index] = "hello world";
});
Copier après la connexion

Dans ce cas, theArray fait référence au tableau d'origine, et nous pouvons accéder et modifier ses éléments directement en utilisant la valeur d'index.

Utilisation du paramètre this

Alternativement, nous pouvons utiliser le paramètre this du rappel forEach() comme référence au array :

arr.forEach(function (part, index) {
  this[index] = "hello world";
}, arr); // Use arr as this
Copier après la connexion

En définissant arr comme valeur de this, nous nous assurons que this[index] pointe vers le bon élément dans le tableau.

Choisir le bon outil

Bien que forEach() permette l'itération et la modification, il existe d'autres méthodes de prototype Array qui peuvent être mieux adaptées à une utilisation spécifique. cases :

  • forEach : itère sur chaque élément et effectue une action, mais ne modifie pas le tableau.
  • filter : crée un nouveau tableau contenant uniquement les éléments qui remplissent une certaine condition.
  • map : Crée un nouveau tableau en transformant chaque élément selon une fonction donnée.
  • some : Vérifie si au moins un élément du tableau satisfait une condition.
  • every : Vérifie si tous les éléments du tableau remplissent une condition.

En sélectionnant la méthode appropriée en fonction de votre tâche, vous pouvez réaliser une manipulation efficace et précise des tableaux.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal