Frage: In JavaScript ist es möglich, eine Datenstruktur zu erstellen, die das Verhalten einer Menge nachahmt und Folgendes bereitstellt die folgende Funktionalität:
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!