Doppelte Werte aus JS-Array entfernen
Das Duplizieren von Elementen in JavaScript-Arrays ist ein häufiges Problem. Um dieses Problem anzugehen, können verschiedene Methoden eingesetzt werden.
Set- und Spread-Syntax:
Die prägnanteste Lösung nutzt den Set-Konstruktor und die Spread-Syntax:
uniq = [...new Set(array)];
Naiver Ansatz:
Der Einfachheit halber beinhaltet ein unkomplizierter Ansatz das Filtern Elemente basierend auf ihrem Index:
uniqueArray = a.filter(function(item, pos) { return a.indexOf(item) == pos; });
Verwendung von Hashtabellen:
Eine effizientere Methode nutzt Hashtabellen und verwendet Objekteigenschaften als Schlüssel:
function uniq(a) { var seen = {}; return a.filter(function(item) { return seen.hasOwnProperty(item) ? false : (seen[item] = true); }); }
Kombinierende Ansätze:
Um verschiedene Arrays zu handhaben, a Hybridlösung kombiniert Hashtabellen für Grundelemente und lineare Suche nach Objekten:
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); }); }
Sortieren und Filtern:
Sortieren vor dem Filtern bietet eine weitere Option, nämlich das Entfernen von Duplikaten basierend auf benachbarten Elementen :
function uniq(a) { return a.sort().filter(function(item, pos, ary) { return !pos || item != ary[pos - 1]; }); }
Benutzerdefiniert Vergleich:
Für eindeutige Vergleiche kann ein Rückruf übergeben werden, wobei gleiche „Schlüssel“ gefiltert werden:
function uniqBy(a, key) { var seen = {}; return a.filter(function(item) { var k = key(item); return seen.hasOwnProperty(k) ? false : (seen[k] = true); }) }
Das obige ist der detaillierte Inhalt vonWie kann ich doppelte Werte aus einem JavaScript-Array entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!