Les développeurs informatiques utilisent le langage javascript pour créer des petites animations sur une page web. Ils emploient plusieurs méthodes pour exécuter des boucles : la méthode for(), la méthode each(), la méthode for…in et bien d’autres encore. Dans cet article, vous allez savoir utiliser la méthode javascript foreach, en la comparant avec les autres manières de faire des boucles. 

Qu’est-ce qu’une boucle en javascript ? 

Source image : pixabay

Une boucle est le fait de répéter une succession d’actions d’une manière simple et rapide. Elle peut être utilisée pour faire plusieurs copies d’une ligne ou d’exécuter une opération maintes fois. 

Il existe différents types de boucles qui possèdent chacun différentes manières de débuter ou de finir une action. Le choix de boucle à utiliser pour un développement informatique dépend du résultat que vous voulez obtenir. 

Deux bibliothèques proposent actuellement les méthodes les plus connues pour gérer les boucles : 

  • jQuery : crée en 2006 pour faciliter l’écriture des scripts en agissant sur les codes HTML, CSS et Javascript
  • EcmaScript : introduite par Ecma International qui est une programmation de scripts standards

Javascript propose différentes boucles mais les plus utilisées sont : 

  • La méthode for
  • Les méthodes while et do…while
  • Les instructions break et continue
  • Les versions améliorées de for comme for…in, for…of ou javascript foreach

Les aptitudes de la méthode javascript foreach 

Javascript foreach travaille sur les propriétés d’un tableau. La méthode donne la possibilité d’effectuer une fonction sur chaque élément du tableau. 

Si vous changez les informations contenues dans le tableau en cours d’itération, la boucle ne fonctionnera pas sur ces modifications. Il faut donc que vous exécutez javascript foreach sur un tableau finalisé

Quand foreach est lancée, elle utilise la fonction callback, comprenant 3 arguments : 

  • La valeur de l’élément
  • L’indice de l’élément
  • Le tableau sur lequel la méthode est directement appliquée

En option, elle peut considérer deux paramètres : 

  • L’indexation qu’on ajoute à la signature callback
  • La collection où foreach travaille

Avec foreach, la boucle tourne jusqu’à la fin. Aucune fonction comme « break » ni « return » ne permet d’en sortir. 

Pour interrompre une itération, le développeur doit entrer une instruction d’exception

Mais quelles sont les particularités de foreach par rapport aux autres méthodes de scripts java ? 

La comparaison entre les méthodes javascript foreach et for

La boucle for est la méthode de base pour un langage de script de java. Si vous avez l’habitude de faire des boucles dans vos développements, vous l’avez sûrement déjà utilisé. Elle peut s’appliquer à n’importe quelle demande. La boucle forcomporte trois actions : 

  • Une première qui s’active avant la boucle, ex i=0
  • Une deuxième qui décrit la durée de la boucle, comme i<10
  • La dernière montre ce que la méthode doit faire une fois que la boucle soit exécutée, du genre i++

Si nous expliquons d’une manière simple cet exemple, d’abord, nous définissons i égal à 0 précédent la boucle. Ensuite, nous demandons à java de refaire la boucle jusqu’à ce que i soit inférieur à 10. Puis, à chaque répétition, i sera augmenté de 1. Et enfin, l’action à faire à chaque boucle sera en langage codifié mis entre parenthèse

Dans le cas de javascript foreach, la variable i à déclarer est de même nature que celle dans le tableau de base, ponctuée de deux points et du nom du tableau

Il existe 2 instructions que vous devez prendre en compte : 

  • L’instruction « break » qui arrête la boucle
  • Le code « continue » qui demande à for de passer directement à la prochaine itération

Comparée à javascript foreach, la méthode for est limitée sur 2 aspects : 

  • Les champs d’action : la boucle for ne peut pas travailler sur les tableaux ou les objets.
  • L’écriture des codes : la boucle foreach est plus facile et plus lisible à transcrire.

Et qu’en est-il de la méthode for..in qui semble plus évoluée ? 

La comparaison entre la boucle for..in et la boucle foreach en javascript 

Lorsque l’objet possède une propriété d’énumération, la méthode for..in est la plus appropriée pour faire une boucle. Pour chaque propriété, elle effectue l’instruction prescrite. La boucle for...in ne parcourt que les valeurs des clés d’un objet suivant 4 attributs : 

  • Value
  • Writtable
  • Enumerable
  • Configurable

Quand l’attribut « enumerable » est « true », ça veut dire que le développeur peut toucher cette propriété. 

Elle peut parcourir des tableaux, mais réserve quelques surprises. Si vous modifiez le tableau en cours de boucle, la méthode for..in prend en compte ces modifications. Ainsi vous pourrez confondre les propriétés modifiées et les indices de base du tableau. Ce qui pénalise cette méthode par rapport à javascript foreach, qui agit directement sur les propriétés du tableau. 

Mais existe-t-il des méthodes qui itèrent efficacement sur les tableaux ? 

La méthode .each() de jQuery

Cette méthode est la plus facile à manipuler pour agir sur les éléments DOM de l’objet jQuery. DOM signifie Document Object Model, qui est une représentation mémoire d’un document XML. DOM permet à son utilisateur d’agir sur cette représentation sans tenir compte du langage utilisé par celui-ci. 

Cette méthode comporte deux aptitudes : 

  • A chaque itération, il passe la récurrence en cours, à partir de 0
  • Le callback agit directement sur l’élément DOM courant de l’objet. Pour cela, each emploie le mot-clé « this » pour identifier l’élément
  • « false » est l’instruction permettant de mettre fin à l’itération

Par rapport à javascript foreach qui manipule les tableaux, cette manière va plus dans les détails de l’objet. 

Et n’y a-t-il pas une méthode plus générique ? 

La boucle générique jQuery.each() 

Appelée aussi $.each(), cette méthode se dit générique, car elle exécute en même temps une boucle sur 2 éléments 

  • les objets
  • les tableaux comme javascript foreach

Si l’objet présente une unité de longueur, jQuery.each est la meilleure manière à adopter. La fonction d’itération est indexée numériquement de 0 à la longueur-1 du tableau. Cette fonction offre plus de latitude que $(selector).each(), qui boucle uniquement les objets jQuery. 

Dans le parcours d’un tableau, la transmission de la récurrence se fait à chaque correspondance entre l’index et la valeur du tableau.  Le mot-clé « this » peut également être utilisé dans ce cas. 

Pareillement, c’est l’instruction « false » qui permet de terminer la boucle   

jQuery.ecah semble être la manière qui prend en compte tous les éléments, mais il existe une instruction encore plus vaste. 

L’instruction for ..of d’ES6

C’est la version de javascript foreach qui est capable de terminer une boucle. Son domaine d’action est plus large, car elle agit sur tous les objets que vous pouvez répéter, par exemple :

  • un array ou le tableau sur lequel javascript foreach s’applique
  • une map
  • un objet

Dans for..of, vous pouvez employer la fonction « const » au lieu de « let » pour limiter l’accessibilité à une lecture seule. Cette fonction permet ainsi de mieux sécuriser la méthode que vous utilisez. 

Comparée à l’instruction for..in, la méthode for..of explore les noms des propriétés et non pas leurs valeurs. Vous ne pouvez pas non plus supprimer ou rajouter des instructions à la main comme vous pouvez le faire avec for..in

 

La méthode javascript some()

EcmaScript5 étant son créateur en 2009. Cette méthode explore le tableau,  comme javascript foreach,  pour repérer au moins un élément correspondant à la demande. Elle s’arrête automatiquement dès qu’elle trouve un élément qui correspond à la particularité demandée.  

La méthode some() considère les focntions « true » et « false ». 

La méthode javascript every()

Quand tous les éléments du tableau sont soumis à une condition donnée, cette méthode contrôle le suivi de cette condition. Elle résulte deux fonctions : 

  • la fonction « true » qui traduit la validation de la condition posée
  • la fonction « false » si la condition n’a pas été respectée

Elle possède aussi une fonction fléchée pour raccourcir le code sans pour autant nuire à la lisibilité du résultat 

La différence entre cette méthode et celle de javascript foreach réside dans le fait que l’instruction s’applique seulement sur les éléments validés par la condition mais pas sur tous les éléments du tableau. 

Si la fonction « false » apparaît sur un élément, aucun autre élément du tableau ne sera itéré. Donc une erreur n’a pas d’impact sur les éléments validés. 

Les limites de la méthode javascript foreach

En résumé, la méthode jevascript foreach est limitée dans les cas suivants : 

  • si vous voulez apporter des changements dans le tableau, elle n’est pas la meilleure méthode à adopter
  • la boucle ne mémorise pas les indexations que vous avez faites sur le tableau
  • le parcours qu’elle fait dans le tableau se dirige uniquement dans un seul sens
  • foreach n’intègre pas les conditions

Source image à la une : pixabay