En javascript, la fonction filter() permet de filtrer un tableau selon des critères définis dans une fonction de callback.
Imaginons ce tableau :
let numbers = [8, 13, 26, 5, 10];
Nous voulons, par exemple, filtrer ce tableau et avoir un tableau regroupant seulement des éléments supérieurs à 8. Nous ferons simplement ceci :
let filteredTable = numbers.filter(function(number) { return number > 8; }); console.log(filteredTable);
Le résultat donnerait :
[13, 26, 10]
Ce qui s’est passé est que le tableau est parcouru et la fonction de callback vérifie que chaque élément du tableau (à travers le paramètre number) est supérieur à 8. Le paramètre number représente l’élément actuel en parcourant le tableau. lorsque l’élément vérifie la condition, il est inséré dans le nouveau tableau.
On pouvait aussi mettre la fonction de callback à part comme ceci :
function filterT(number) { return number > 8; } let filteredTable = numbers.filter(filterT); console.log(filteredTable);
Dans cette ligne : var filteredTable = numbers.filter(filterT); le paramètre de la fonction est passé implicitement.
Le même principe peut s’appliquer sur un tableau plus complexe comme un tableau d’objet par exemple:
let persons = [ {name: "John", lastname: "Doe"}, {name: "Balo", lastname: "Ziétin"}, {name: "John", lastname: "Badwin"} ]; let choice = persons.filter(function(person) { return person.name == "John"; }); console.log(choice);
Et le résultat :
[ {name: "John", lastname: "Doe"} {name: "John", lastname: "Badwin"} ]
Dans cet exemple, on voulait filtrer et avoir un tableau des personnes ayant pour nom « John ».