Heim  >  Artikel  >  Web-Frontend  >  Wie erreicht man eine satzartige Funktionalität in JavaScript?

Wie erreicht man eine satzartige Funktionalität in JavaScript?

Barbara Streisand
Barbara StreisandOriginal
2024-10-28 06:56:30352Durchsuche

 How to Achieve Set-Like Functionality in JavaScript?

Mengen in JavaScript nachahmen?

Frage: In JavaScript ist es möglich, eine Datenstruktur zu erstellen, die das Verhalten einer Menge nachahmt und Folgendes bereitstellt die folgende Funktionalität:

  • Überprüfen Sie effizient, ob ein Wert in der Menge vorhanden ist.
  • Löschen Sie schnell ein Element, wenn es vorhanden ist.
  • Fügen Sie schnell ein Element hinzu, wenn es nicht vorhanden ist bereits vorhanden.

Was ist der beste Ansatz, um diese satzartige Funktionalität zu erreichen? Ist die Verwendung eines Objekts, bei dem die Schlüssel Eigenschaften speichern und die Werte alle auf „true“ gesetzt sind, eine vernünftige Lösung?

Antwort:

In einer ES6-Umgebung können Sie es nutzen das integrierte Set-Objekt, das alle gewünschten Funktionen bereitstellt.

Für ES5 und niedriger:

Verwenden eines Objekts:

Das Erstellen eines Objekts mit Schlüsseln, die die Werte darstellen, und Werten, die immer auf „true“ gesetzt sind, kann für einfache Aufgaben funktionieren, hat aber Einschränkungen. Beispielsweise müssen Sie die Richtigkeit prüfen, indem Sie if (obj[key]) anstelle des prägnanteren if (key in obj) verwenden. Darüber hinaus zwingt dieser Ansatz alle Schlüssel zu Zeichenfolgen, was es problematisch macht, wenn Sie sowohl numerische als auch Zeichenfolgenschlüssel haben, die sich unterschiedlich verhalten sollten.

Betrachten Sie diese modifizierte objektbasierte Lösung, die einige dieser Probleme behebt:

// create empty object
var obj = {};

// or create an object with some items already in it
var obj = { "1": true, "2": true, "3": true, "9": true };

// Question 1: Is A in the list?
if (Object.prototype.hasOwnProperty.call(obj, A))
    // put code here

// Question 2: Delete 'A' from the list if it's there
delete obj[A];

// Question 3: Add 'A' to the list if it's not already there
obj[A] = true;

Vorgefertigte Set-Objekte:

Wenn Sie eine vorgefertigte Lösung bevorzugen, können Sie vorgefertigte Set-Objekte wie miniSet oder ein Set-Objekt mit mehr Funktionen verwenden . Sie bieten eine unkomplizierte Schnittstelle zum Ausführen von Set-Operationen.

ES6 Set Polyfill:

Für ES6-Kompatibilität können Sie eine Polyfill wie die ES6 Set Polyfill verwenden. Dadurch können Sie ES6-kompatiblen Code schreiben, der in Umgebungen zurück zu IE7 funktioniert, aber die Benutzerfreundlichkeit des nativen ES6-Set-Objekts nicht vollständig erfasst.

Das obige ist der detaillierte Inhalt vonWie erreicht man eine satzartige Funktionalität in JavaScript?. 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