Bei der Arbeit mit JavaScript-Arrays ist es oft notwendig, doppelte Werte zu entfernen. Um dies zu erreichen, ohne das ursprüngliche Array zu ändern, können mehrere Ansätze verwendet werden.
Die einfachste Methode ist die Verwendung des Sets Konstruktor und die Spread-Syntax:
const uniq = [...new Set(array)];
Dadurch wird ein neues Set aus dem Array erstellt, das automatisch Duplikate entfernt. Die Spread-Syntax wandelt das Set dann wieder in ein Array um.
Eine weitere Option besteht darin, das Array basierend auf der indexOf-Methode zu filtern:
const uniqueArray = a.filter(function(item, pos) { return a.indexOf(item) == pos; });
Diese Methode durchläuft das Array und prüft, ob das erste Vorkommen jedes Elements mit seiner Position übereinstimmt. Nur eindeutige Elemente erfüllen diese Bedingung.
Aus Effizienzgründen kann Hashing mit Objekten verwendet werden:
function uniq(a) { const seen = {}; return a.filter(function(item) { return seen.hasOwnProperty(item) ? false : (seen[item] = true); }); }
Bei diesem Ansatz wird eine Hash-Tabelle verwaltet, um schnell nach doppelten Werten zu suchen und so eine lineare Zeit sicherzustellen Komplexität.
Wenn das Eingabearray sortiert ist, ist es möglich, Duplikate zu entfernen, indem es sortiert und dann aufeinanderfolgende gleiche Elemente herausgefiltert wird:
function uniq(a) { return a.sort().filter(function(item, pos, ary) { return !pos || item != ary[pos - 1]; }); }
Um Duplikate basierend auf bestimmten Kriterien zu filtern, kann eine Rückruffunktion verwendet werden:
function uniqBy(a, key) { const seen = {}; return a.filter(function(item) { const k = key(item); return seen.hasOwnProperty(k) ? false : (seen[k] = true); }); }
Der Tastenrückruf ermöglicht benutzerdefinierte Vergleiche und ermöglicht das Entfernen von Duplikaten basierend auf komplexeren Kriterien Logik.
In bestimmten Szenarien kann es wünschenswert sein, entweder das erste oder das letzte Vorkommen doppelter Elemente beizubehalten:
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() ] }
Die uniqByKeepFirst-Funktion verwendet einen Satz, um eindeutige Schlüssel zu verwalten , während uniqByKeepLast eine Map verwendet, um den zuletzt gefundenen Wert beizubehalten, der jedem Schlüssel zugeordnet ist.
Das obige ist der detaillierte Inhalt vonWie entferne ich doppelte Werte aus einem JavaScript-Array?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!