Supprimer les valeurs en double du tableau JS
La duplication d'éléments dans les tableaux JavaScript est un problème courant. Pour résoudre ce problème, diverses méthodes peuvent être utilisées.
Syntaxe Set et Spread :
La solution la plus concise utilise le constructeur Set et la syntaxe spread :
uniq = [...new Set(array)];
Approche naïve :
Pour plus de simplicité, une approche simple consiste à filtrer les éléments en fonction sur leur index :
uniqueArray = a.filter(function(item, pos) { return a.indexOf(item) == pos; });
Utilisation des tables de hachage :
Une méthode plus efficace exploite les tables de hachage, en utilisant les propriétés des objets comme clés :
function uniq(a) { var seen = {}; return a.filter(function(item) { return seen.hasOwnProperty(item) ? false : (seen[item] = true); }); }
Combinaison d'approches :
Pour gérer diverses baies, une solution hybride combine des tables de hachage pour les primitives et la recherche linéaire d'objets :
function uniq(a) { var prims = {"boolean":{}, "number":{}, "string":{}}, objs = []; return a.filter(function(item) { var type = typeof item; if(type in prims) return prims[type].hasOwnProperty(item) ? false : (prims[type][item] = true); else return objs.indexOf(item) >= 0 ? false : objs.push(item); }); }
Tri et filtrage :
Le tri avant le filtrage offre une autre option, supprimant les doublons en fonction des éléments adjacents :
function uniq(a) { return a.sort().filter(function(item, pos, ary) { return !pos || item != ary[pos - 1]; }); }
Comparaison personnalisée :
Pour comparaisons uniques, un rappel peut être passé, avec des "clés" égales filtrées :
function uniqBy(a, key) { var seen = {}; return a.filter(function(item) { var k = key(item); return seen.hasOwnProperty(k) ? false : (seen[k] = true); }) }
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!