Développeur devant son ordinateur

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.

// Exemple : Supprimer les nombres négatifs
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.

// Exemple : Retirer un élément spécifique
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 sites = ['google.fr', 'amazon.fr', 'github.com'];
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 grosTableau = ['site1.com', 'site2.com', 'site3.com'];
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 un Set pour 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.

Attention : Modifier un tableau d'origine avec splice() à l'intérieur d'une boucle peut décaler les index et sauter des éléments.
Règle d'or : Privilégiez 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

Sources

Écran d'ordinateur affichant du code Convertir une chaîne de caractères en nombre en JavaScript

Number(), parseInt(), parseFloat() ou l'opérateur + unaire : quelles différences, quels pièges, et quand utiliser chaque méthode pour convertir une chaîne en nombre en JavaScript.

Une calculatrice posée sur un bureau Comment arrondir un nombre en JavaScript ?

Découvrez les différentes méthodes pour arrondir un nombre en JavaScript : Math.round(), Math.ceil(), Math.floor(), ainsi que toFixed().

Un développeur travaille sur son site web avec du code JavaScript à l'écran. Afficher l'année actuelle en JavaScript en 3 étapes

Découvrez comment afficher dynamiquement l'année actuelle en JavaScript en 3 étapes simples, parfait pour un footer ou un copyright. Fini la mise à jour manuelle chaque année !