Lorsque vous travaillez avec des tableaux JavaScript, il est souvent nécessaire de supprimer les valeurs en double. Plusieurs approches peuvent être utilisées pour y parvenir sans altérer le tableau d'origine.
La méthode la plus simple consiste à utiliser le constructeur Set constructeur et la syntaxe spread :
const uniq = [...new Set(array)];
Cela crée un nouveau Set à partir du tableau, qui supprime automatiquement les doublons. La syntaxe de propagation reconvertit ensuite le Set en tableau.
Une autre option consiste à filtrer le tableau en fonction de la méthode indexOf :
const uniqueArray = a.filter(function(item, pos) { return a.indexOf(item) == pos; });
Cette méthode parcourt le tableau et vérifie si la première occurrence de chaque élément correspond à sa position. Seuls les éléments uniques satisferont à cette condition.
Pour plus d'efficacité, le hachage avec des objets peut être utilisé :
function uniq(a) { const seen = {}; return a.filter(function(item) { return seen.hasOwnProperty(item) ? false : (seen[item] = true); }); }
Cette approche maintient une table de hachage pour vérifier rapidement les valeurs en double, garantissant ainsi un temps linéaire complexité.
Si le tableau d'entrée est trié, il est possible de supprimer les doublons en le triant puis en filtrant les éléments égaux consécutifs :
function uniq(a) { return a.sort().filter(function(item, pos, ary) { return !pos || item != ary[pos - 1]; }); }
Pour filtrer les doublons en fonction de critères spécifiques, une fonction de rappel peut être utilisée :
function uniqBy(a, key) { const seen = {}; return a.filter(function(item) { const k = key(item); return seen.hasOwnProperty(k) ? false : (seen[k] = true); }); }
La clé de rappel permet des comparaisons personnalisées et permet de supprimer les doublons en fonction de critères plus complexes. logique.
Dans certains scénarios, il peut être souhaitable de conserver la première ou la dernière occurrence d'éléments en double :
function uniqByKeepFirst(a, key) { const seen = new Set(); return a.filter(item => { const k = key(item); return seen.has(k) ? false : seen.add(k); }); } function uniqByKeepLast(a, key) { return [ ...new Map( a.map(x => [key(x), x]) ).values() ] }
La fonction uniqByKeepFirst utilise un Set pour conserver les clés uniques. , tandis qu'uniqByKeepLast utilise une Map pour conserver la dernière valeur rencontrée associée à chaque clé.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!