Junior
Comment supprimer tous les doublons d'un tableau?
sobes.tech IA
Réponse de l'IA
Il existe plusieurs méthodes courantes :
-
Utilisation de
Set: La méthode la plus moderne et concise.Setne stocke que des valeurs uniques.const arr = [1, 2, 2, 3, 4, 4, 5]; const uniqueArr = [...new Set(arr)]; // uniqueArr sera [1, 2, 3, 4, 5]const arr = [{ id: 1, name: 'A' }, { id: 2, name: 'B' }, { id: 1, name: 'A' }]; const uniqueArr = Array.from(new Set(arr.map(JSON.stringify))).map(JSON.parse); // Pour les objets, il faut convertir en chaînes pour une comparaison correcte dans Set // uniqueArr sera [{ id: 1, name: 'A' }, { id: 2, name: 'B' }] -
Utilisation de
filteretindexOf: Filtrer le tableau en conservant uniquement les éléments dont la première apparition correspond à leur index actuel.const arr = [1, 2, 2, 3, 4, 4, 5]; const uniqueArr = arr.filter((item, index) => arr.indexOf(item) === index); // uniqueArr sera [1, 2, 3, 4, 5] -
Utilisation de
reduce: Créer un nouveau tableau en ajoutant des éléments s'ils ne sont pas déjà présents.const arr = [1, 2, 2, 3, 4, 4, 5]; const uniqueArr = arr.reduce((acc, curr) => { if (!acc.includes(curr)) { acc.push(curr); } return acc; }, []); // uniqueArr sera [1, 2, 3, 4, 5]const arr = [1, 2, 2, 3, 4, 4, 5]; const uniqueArr = arr.reduce((acc, curr) => acc.includes(curr) ? acc : [...acc, curr], []); // Variante plus courte // uniqueArr sera [1, 2, 3, 4, 5] -
Utilisation d'objet/Map : Créer un objet ou un
Mappour suivre les éléments déjà rencontrés.const arr = [1, 2, 2, 3, 4, 4, 5]; const seen = {}; const uniqueArr = arr.filter(item => seen.hasOwnProperty(item) ? false : (seen[item] = true)); // uniqueArr sera [1, 2, 3, 4, 5]const arr = [1, 2, 2, 3, 4, 4, 5]; const seen = new Map(); const uniqueArr = arr.filter(item => { if (!seen.has(item)) { seen.set(item, true); return true; } return false; }); // uniqueArr sera [1, 2, 3, 4, 5]
La méthode utilisant Set est généralement la plus performante et lisible pour les types primitifs. Pour les objets, une logique supplémentaire peut être nécessaire.