Comprendre filter en JavaScript

Le par 

Découvrons ensemble comment filtrer efficacement des tableaux en JavaScript grâce à la méthode filter.

Pourquoi utiliser filter ?

.filter() est une méthode incontournable lorsque vous travaillez avec des arrays en JavaScript. Elle permet de sélectionner certains éléments d’un tableau en fonction d’un critère et de créer un nouveau tableau qui ne contient que les éléments qui respectent ce critère.

Là où .map() transforme tous les éléments (voir article ici), .filter() ne conserve que ceux qui passent un test.

Syntaxe de base

array.filter(callback);

Le callback est une fonction qui doit retourner un booléen (true ou false) pour chaque élément :

(valeurCourante, index, tableau) => condition;

.filter() retourne un nouveau tableau, qui ne contient que les éléments pour lesquels le callback retourne true.

Comment fonctionne filter étape par étape

Prenons un exemple simple :

const nombres = [1, 2, 3, 4];
const pairs = nombres.filter((nombre) => nombre % 2 === 0);

Ici, on souhaite ne garder que les nombres pairs. On utilise donc l’opérateur modulo % qui calcule le reste d’une division entre deux nombres. Si le reste est 0, cela signifie que le nombre est divisible par 2, donc qu’il est pair.

En français, on pourrait donc lire ce code de la manière suivante : à partir de l’array nombres, filtre tous les nombres et conserve uniquement ceux qui pairs.

Étapes de filtrage

ÉtapevaleurCouranteconditionInclus ?Résultat
11false✖️[]
22true✔️[2]
33false✖️[2]
44true✔️[2, 4]

Cas d’usage concrets

Cas d’usage 1 : Filtrer des nombres

const nombres = [5, 12, 8, 130, 44];
const grands = nombres.filter((nombre) => nombre > 10);

Résultat : [12, 130, 44]

Ici, seuls les nombres supérieurs à 10 sont conservés.

Cas d’usage 2 : Garder certains objets

const utilisateurs = [
  { prenom: "Alice", actif: true },
  { prenom: "Bob", actif: false },
];

const actifs = utilisateurs.filter((utilisateur) => utilisateur.actif);

Résultat : [ { nom: "Alice", actif: true } ]

On ne garde ici que les utilisateurs actifs.

Cas d’usage 3 : Supprimer des valeurs falsy

const valeurs = [0, 1, false, 2, "", 3];
const filtrees = valeurs.filter(Boolean);

Résultat : [1, 2, 3]

Cette astuce est bien connue : utiliser simplement Boolean comme callback supprime les éléments falsy : 0, false, "", null, undefined, NaN.

Maintenant, à votre tour !

Voici quelques exercices simples pour vous entraîner avec .filter() :

Exercice 1 : Ne garder que les nombres positifs

const nombres = [-2, 3, 0, -1, 5];
// Résultat attendu : [3, 5]
Solution
const positifs = nombres.filter((nombre) => nombre > 0);

On choisit de retourner ici chaque nombre supérieur à 0.

Exercice 2 : Ne garder que les chaînes non vides

const mots = ["bonjour", "", "salut", ""];
// Résultat attendu : ["bonjour", "salut"]
Solution
const nonVides = mots.filter((mot) => mot !== "");

On ne retourne que les mots qui sont différents d’une string vide.

Exercice 3 : Filtrer des objets selon une propriété

const personnes = [
  { nom: "Luc", age: 17 },
  { nom: "Emma", age: 22 },
];
// Résultat attendu : [{ nom: "Emma", age: 22 }]
Solution
const majeurs = personnes.filter((personne) => personne.age >= 18);

Il y a plusieurs manières de faire pour cet exercice. J’ai choisi de n’afficher que les personnes majeures, donc toutes celles dont l’âge est supérieur ou égal à 18.

Exercice 4 : Ne garder que les fichiers .js

const fichiers = ["index.html", "app.js", "style.css", "script.js"];
// Résultat attendu : ["app.js", "script.js"]
Solution
const fichierJS = fichiers.filter((fichier) => fichier.endsWith(".js"));

Pour chaque fichier, on ne conserve que ceux qui se terminent par .js.

Bonnes pratiques

En résumé

.filter() est la méthode idéale quand vous avez besoin de faire le tri dans un tableau. Elle vous permet de garder uniquement ce qui vous intéresse, tout en laissant le tableau original intact.

Une fois que vous maîtrisez .filter(), vous pourrez l’utiliser au quotidien pour rendre votre code plus clair, plus concis et plus expressif. Essayez de combiner .map() et .filter() pour aller encore plus loin dans la manipulation de données !

Copyright © 2025 - CodeCodeCoders. Tous droits réservés.

Hébergé par Netlify - 512 2nd Street, Suite 200 San Francisco, CA 94107