Heim >Web-Frontend >js-Tutorial >Wie kann ich doppelte Werte aus einem JavaScript-Array entfernen?

Wie kann ich doppelte Werte aus einem JavaScript-Array entfernen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-22 12:22:111005Durchsuche

How Can I Remove Duplicate Values from a JavaScript Array?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn