Soit un tableau tab dont on veut passer en revue tous les éléments.
Une première idée pour ce faire est
for(var i = 0; i<tab.length; i++) {/* des trucs avec tab[i] */}
Marche très bien, présente cependant l'inconvénient d'accéder à la propriété length du tableau à chaque itération de la boucle. Pour de très grosses boucles ou des boucles qui doivent s'exécuter très vite (gestionnaires d'événements, par exemple), le temps utilisé peut gêner.
Première variante : si la boucle ne crée ni ne supprime d'éléments dans le tableau, circonstance fréquente, on peut sauvegarder cette longueur au lancement de la boucle :
for(var i = 0, imax=tab.length; i<imax; i++) {/* des trucs avec tab[i] */}
Autre économie classique : si le corps de boucle utilise plusieurs fois tab[i] le stocker dans une variable auxiliaire :
var t; for(var i = 0; i<tab.length; i++) {t=tab[i]; /* des trucs avec t */}
le coup de l'imaxlorsque c'est possible :
var t; for(var i = 0, imax=tab.length; i<imax; i++) {t=tab[i]; /* des trucs avec t */}
Variante élégante et intéressante : le tableau peut ne contenir aucun élément false, null, undefined ou simplement égal à zéro. C'est en particulier vrai pour les références qu'on récupère avec getElementsByTagName. On peut alors écrire ceci :
for(var i = 0, t; t=tab[i]; i++) {/* des trucs avec t */}
Explication si ça vous déroute un peu : t=tab[i] est bien un test ! On ne teste pas que t est égal à tab[i] (qui s'écrirait d'ailleurs t==tab[i]) mais on exécute l'affectation t=tab[i] et on teste son résultat, qui est t. Efficace et compact.
Pour mémoire : d'autres liens JavaScript
- Présentation
- Déverminer un programme
- Tirages aléatoires
- Boucle sur un Array
- Recherche dans un Array - indexOf
- Utiliser la classe d'un élément
- Trouver un élément dans la page : getElementById - getElementsByTagName
- Trouver un élément dans la page : exploiter className
- Trouver un élément dans la page : Notions sur le DOM
- Trouver un élément dans la page : Naviguer dans le DOM
- Gestion des cookies
- Conversion de couleurs CSS