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

Wie entferne ich doppelte Werte aus einem JavaScript-Array?

Linda Hamilton
Linda HamiltonOriginal
2024-12-19 19:03:101039Durchsuche

How to Remove Duplicate Values from a JavaScript Array?

Doppelte Werte aus JS-Array entfernen

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.

Verwenden des Set-Konstruktors und der Spread-Syntax

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.

Eindeutige Elemente filtern

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.

Hashing mit Objekten

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.

Sortieren und Filtern

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];
    });
}

Einzigartig nach Maß Kriterien

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.

Das Erste oder Letzte bewahren Vorkommen

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!

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