Référence de JavaScript 1.5 Core:Objets globaux:Array:filter
Un article de MDC.
Sommaire |
[modifier] Résumé
Crée un nouveau tableau avec tous les éléments qui passent le test implémenté par la fonction fournie.
| Méthode de Array | |
| Implémentation : | JavaScript 1.6 (Gecko 1.8b2 et ultérieurs) |
| Édition d'ECMAScript : | aucune |
[modifier] Syntaxe
var tableauFiltré = array.filter(callback[, objetThis]);
[modifier] Paramètres
-
callback - Fonction pour tester chaque élément du tableau.
-
objetThis - Objet à utiliser comme
thislors de l'exécution decallback.
[modifier] Description
filter appelle une fonction callback fournie, une seule fois pour chaque élément du tableau, et construit un nouveau tableau formé de toutes les valeurs pour lesquelles callback renvoie une valeur true. callback n'est invoquée que pour les indices du tableau auxquels sont assignés des valeurs ; ce n'est pas le cas pour les indices qui ont été supprimés ou auxquels aucune valeur n'a jamais été assignée. Les éléments du tableau qui ne passent pas la fonction callback sont simplement passés et ne feront pas partie du nouveau tableau.
callback est invoquée avec trois paramètres : la valeur de l'élément, son indice et l'objet Array en train d'être parcouru.
Si un paramètre objetThis est fourni à filter, il sera utilisé comme valeur de 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.
filter ne modifie pas le tableau depuis lequel il est appelé.
L'intervalle des éléments traités par filter est défini avant la première invocation de callback. Les éléments qui sont ajoutés au tableau après que l'appel à filter commence ne seront pas visités par callback. Si des éléments existants du tableau sont modifiés ou supprimés, la valeur passées à callback sera celle définie à l'instant où filter les visite ; les éléments qui ont été supprimés ne seront pas visités.
[modifier] Compatibilité
filter est une extension de JavaScript à la norme ECMA-262 ; en tant que telle, elle peut ne pas être présente dans d'autres implémentations de cette norme. Il est possible de contourner ceci en insérant le code qui suit au début de vos scripts, permettant d'utiliser filter dans des implémentations ECMA-262 qui ne le gèrent pas nativement. Cet algorithme est exactement identique à celui utilisé dans Firefox et SpiderMonkey.
if (!Array.prototype.filter)
{
Array.prototype.filter = function(fun /*, thisp*/)
{
var len = this.length;
if (typeof fun != "function")
throw new TypeError();
var res = new Array();
var thisp = arguments[1];
for (var i = 0; i < len; i++)
{
if (i in this)
{
var val = this[i]; // in case fun mutates this
if (fun.call(thisp, val, i, this))
res.push(val);
}
}
return res;
};
}
[modifier] Exemples
[modifier] Exemple : filtrage de toutes les petites valeurs
L'exemple qui suit utilise filter pour créer un tableau filtré dont tous les éléments de valeur inférieure à 10 ont été retirés.
function estAssezGrand(element, indice, array) {
return (element >= 10);
}
var filtré = [12, 5, 8, 130, 44].filter(estAssezGrand);