Référence de JavaScript 1.5 Core:Objets globaux:Array:forEach
Un article de MDC.
Sommaire |
[modifier] Résumé
Exécute une fonction fournie une fois par élément du tableau.
| Méthode de Array | |
| Implémenté dans : | JavaScript 1.6 (Gecko 1.8b2 et supérieurs) |
| Édition d'ECMAScript : | aucune |
[modifier] Syntaxe
tableau.forEach(callback[, objetThis])
[modifier] Paramètres
-
callback - fonction à exécuter pour chaque élément.
-
objetThis - objet à utiliser en tant que
thislors de l'exécution decallback.
[modifier] Description
forEach exécute la fonction fournie (callback) une fois pour chaque élément présent dans le tableau. callback est invoquée uniquement pour les indices du tableau auxquels sont assignés des valeurs. Elle ne sera pas invoquée pour les indices qui ont été supprimés ou pour lesquels aucune valeur n'a jamais été assignée.
La fonction callback est invoquée avec trois paramètres : la valeur de l'élément, son indice dans le tableau, et l'objet Array parcouru.
Si un paramètre objetThis est fourni à forEach, il sera utilisé comme objet this pour chaque invocation de callback. S'il n'est pas fourni, ou vaut null, l'objet global associé avec callback sera utilisé à la place.
forEach ne modifie pas le tableau sur lequel on l'appelle.
L'intervalle des éléments traités par forEach est défini avant la première invocation de callback. Les éléments qui sont ajoutés au tableau après le début de l'appel à forEach ne seront pas visités par callback. Si des éléments existants du tableau sont modifiés ou supprimés, leur valeur passée à callback sera celle qu'ils ont au moment de leur visite par forEach, les éléments qui ont été supprimés ne seront pas visités.
[modifier] Compatibilité
forEach est une extension de JavaScript au standard ECMA-262 standard. En tant que telle, elle peut ne pas être présente dans d'autres implémentations de ce standard. Il est possible de contourner cette absence en ajoutant le code suivant au début de vos scripts, qui permettra d'utiliser forEach dans les implémentations d'ECMA-262 qui ne le gèrent pas nativement. Cet algorithme est exactement le même que celui utilisé dans Firefox et SpiderMonkey.
if (!Array.prototype.forEach)
{
Array.prototype.forEach = function(fun /*, thisp*/)
{
var len = this.length;
if (typeof fun != "function")
throw new TypeError();
var thisp = arguments[1];
for (var i = 0; i < len; i++)
{
if (i in this)
fun.call(thisp, this[i], i, this);
}
};
}
[modifier] Exemples
[modifier] Exemple : affichage du contenu d'un tableau
Le code qui suit affiche une ligne pour chaque élément d'un tableau :
function printElt(element, index, array) {
print("[" + index + "] vaut " + element); // suppose que print soit déjà définie
}
[2, 5, 9].forEach(printElt);
// Affiche :
// [0] vaut 2
// [1] vaut 5
// [2] vaut 9
[modifier] Exemple : affichage du contenu d'un tableau avec une méthode objet
Le code suivant crée un objet d'écriture simple et utilise ensuite la méthode writeln pour afficher une ligne par élément dans le tableau :
var writer = {
sb: [],
write: function (s) {
this.sb.push(s);
},
writeln: function (s) {
this.write(s + "\n");
},
toString: function () {
return this.sb.join("");
}
};
[2, 5, 9].forEach(writer.writeln, writer);
print(writer.toString()); // suppose que print soit déjà définie
// Affiche :
// 2
// 5
// 9