Comment filtrer et supprimer des éléments d'un tableau en JavaScript ?
Publié le
En JavaScript, il existe plusieurs façons de supprimer des éléments d'un tableau. Selon
votre besoin, vous pouvez soit créer un nouveau tableau nettoyé, soit modifier
directement le tableau d'origine. Les deux méthodes principales sont
filter() et
splice(), mais l'objet
Set permet d'aller plus loin pour gérer des listes
d'exclusions. Voyons ça en détail.
filter() : Créer un nouveau tableau
La méthode filter() renvoie un nouveau tableau
contenant uniquement les éléments qui remplissent une condition. Elle ne modifie pas le
tableau de départ.
const nombres = [10, -3, 5, -1, 8];
const positifs = nombres.filter(num => num >= 0);
console.log(positifs); // Affiche [10, 5, 8]
console.log(nombres); // Affiche [10, -3, 5, -1, 8] (inchangé)
splice() : Modifier le tableau d'origine
La méthode splice() modifie directement le tableau
initial. Elle s'utilise en trouvant d'abord l'index de l'élément à supprimer.
const outils = ['HTML', 'CSS', 'Ruby', 'JS'];
const index = outils.indexOf('Ruby');
if (index !== -1) {
outils.splice(index, 1); // Supprime 1 élément à partir de l'index
}
console.log(outils); // Affiche ['HTML', 'CSS', 'JS']
Filtrer un tableau avec une liste d'exclusions
Si vous devez filtrer un tableau en comparant ses éléments avec une liste noire (par exemple, un historique d'éléments déjà traités), il existe deux approches.
Méthode classique avec includes()
Vous pouvez combiner filter() et
includes(). Cette solution fonctionne bien pour les
petits tableaux.
const exclusions = ['amazon.fr'];
const restants = sites.filter(site => !exclusions.includes(site));
console.log(restants); // Affiche ['google.fr', 'github.com']
Méthode optimisée avec un Set
Pour les tableaux volumineux, includes() devient lent.
Utiliser la méthode has() d'un objet
Set est beaucoup plus rapide.
const listeNoire = new Set(['site2.com']);
const resultat = grosTableau.filter(site => !listeNoire.has(site));
console.log(resultat); // Affiche ['site1.com', 'site3.com']
Choix de la méthode
Le choix dépend du comportement souhaité :
-
Utilisez
filter()pour obtenir un nouveau tableau sans toucher à l'original. -
Utilisez
splice()si vous devez modifier le tableau d'origine directement. -
Utilisez
filter()combiné avec unSetpour comparer efficacement deux listes de données.
Comportement avec des objets
Attention avec les tableaux d'objets. En JavaScript, deux objets distincts ayant les mêmes propriétés ne sont pas considérés comme identiques. Pour filtrer des objets, vous devez baser votre condition sur une propriété unique, comme un identifiant.
splice() à l'intérieur d'une boucle peut décaler les
index et sauter des éléments.
filter() pour garder votre code prévisible et éviter
les effets de bord inattendus sur vos variables.
Résumé des méthodes
| Méthode | Modification de l'original | Cas d'usage |
|---|---|---|
filter()
|
Non (renvoie un nouveau tableau) | Exclure des éléments selon une condition simple sans toucher aux données initiales |
splice()
|
Oui (modifie directement le tableau) | Supprimer un ou plusieurs éléments à partir d'un index précis |
filter() + Set
|
Non (renvoie un nouveau tableau) | Filtrer efficacement de gros volumes de données à partir d'une liste d'exclusions |