1. Behandeln Sie Objekte nicht als Karten1. Auf undefinierte Eigenschaften kann über die Prototypenkette zugegriffen werdenNehmen wir das aktuelle Szenario an und entwickeln eine Website, müssen wir drei Sprachen bereitstellen: Japanisch, Chinesisch und Koreanisch. Wir können ein Wörterbuch definieren, um sie zu verwalten. const Wörterbuch = { 'ja': { 'Ninjas zu mieten': 'Ninjas zu mieten', }, 'zh': { 'Ninjas zu mieten': 'Ninjas zu mieten', }, 'ko': { „Ninjas zu vermieten“: „고용닌자“, } } console.log(dictionary.ja['Ninjas zu vermieten']) // Ninjas zu vermietenconsole.log(dictionary.zh['Ninjas zu vermieten']) // Ninjas zu vermietenconsole.log(dictionary.ko['Ninjas zu vermieten']) // Ninjas zu vermietenconsole.log(dictionary.ko['Ninjas zu vermieten']) // Ninjas zu vermieten Auf diese Weise verwalten wir Wörterbücher in verschiedenen Sprachen. Beim Versuch, auf console.log(dictionary.ko['constructor']) // ƒ Objekt() { [nativer Code] } Bei nicht vorhandenen Eigenschaften erwarten wir, dass wir Eine Lösung besteht darin, den Prototyp auf Objekt.setPrototypeOf(dictionary.ko, null) console.log(dictionary.ko['Konstruktor']) // undefiniert 2. Der Schlüssel des Objekts kann nur eine Zeichenfolge sein Angenommen, Sie müssen /* HTML-Teil <div id="firstElement"></div> <div id="zweitesElement"></div> */ const erstesElement = document.getElementById('erstesElement') const zweitesElement = document.getElementById('zweitesElement') const map = {} map[erstesElement] = { Daten: "erstesElement" } map[zweitesElement] = { Daten: "zweites Element" } console.log(map[erstesElement].data) // zweitesElement console.log(map[zweitesElement].data) // zweitesElement Die Daten des ersten Elements werden überschrieben, da der Schlüssel im Objekt nur vom Typ String sein kann. Wenn wir den Typ String nicht verwenden, ruft es implizit Objektschlüssel können auch 2. Verwenden der Karte1. Allgemeine Kartenoperationen Funktion Personen(Name) { dieser.name = Name } const zhangsan = neue Leute('zhangsan') const xiaoming = neue Leute('xiaoming') const lihua = neue Leute('lihua') // Eine Karte erstellen const map = neue Map() // Erstelle eine Map und initialisiere sie, um das zweidimensionale Schlüssel-Wert-Array in ein Map-Objekt umzuwandeln const map1 = new Map([ ['Schlüssel1', 'Wert1'], ['Schlüssel2', 'Wert2'], ]) // Map in ein zweidimensionales Array umwandeln console.log(Array.from(map1)) // [ [ 'key1', 'val1' ], [ 'key2', 'val2' ] ] // Legen Sie die Schlüssel-Wert-Zuordnungsbeziehung fest map.set(zhangsan, { region: 'HB' }) map.set(xiaoming, { region: 'HN' }) // Den entsprechenden Wert gemäß dem Schlüssel abrufen console.log(map.get(zhangsan)) // { region: 'HB' } console.log(map.get(xiaoming)) // { Region: 'HN' } // Holen Sie sich den nicht vorhandenen Schlüssel und erhalten Sie undefined console.log(map.get(lihua)) // undefiniert // Verwenden Sie die Funktion „has“, um zu bestimmen, ob der angegebene Schlüssel vorhanden ist. console.log(map.has(lihua)) // false console.log(map.has(xiaoming)) // wahr //Map speichert die Anzahl der Zuordnungenconsole.log(map.size) // 2 // Löschen Löschtaste Karte.Löschen(xiaoming) console.log(map.has(xiaoming)) // falsch console.log(Kartengröße) // 1 // clear löscht die Karte Karte.löschen() console.log(Kartengröße) // 0 2. Durchqueren der KarteMap kann sicherstellen, dass die Durchlaufreihenfolge mit der Einfügereihenfolge übereinstimmt const zhangsan = { name: 'zhangsan' } const xiaoming = { name: 'xiaoming' } const map = neue Map() map.set(zhangsan, { region: 'HB' }) map.set(xiaoming, { region: 'HN' }) // Jedes Schlüssel-Wert-Paar gibt ein Array von [Schlüssel, Wert] zurück for (let item of map) { // = for (let item of map.entries()) { console.log(Element) // [ { Name: 'zhangsan' }, { Region: 'HB' } ] // [ { Name: 'xiaoming' }, { Region: 'HN' } ] } // Durchlaufe den Schlüssel für (let Schlüssel von map.keys()) { console.log(Schlüssel) // { Name: "zhangsan" } // { Name: "Xiaoming" } } // Wert durchlaufen für (let Schlüssel von map.values()) { console.log(Schlüssel) // { region: 'HB' } // { Region: 'HN' } } //Iteriere über die Map mit der Methode forEach() map.forEach(Funktion(Wert, Schlüssel) { console.log(Schlüssel, Wert) // { Name: 'zhangsan' } { Region: 'HB' } // { Name: 'xiaoming' } { Region: 'HN' } }) 3. Schlüsselgleichheit in Map ermitteln Über SameValue ( Objekt.ist(NaN, NaN) // wahr Objekt.ist(0, -0) // falsch Der Hauptunterschied zwischen Karte.set(NaN, 0) Karte.Satz(0, 0) console.log(map.has(NaN)) // wahr console.log(map.has(-0)) // wahr 4. Karte kopieren oder zusammenführenKarten können wie Arrays kopiert werden lass original = neue Karte([ [1, {}] ]) let clone = neue Map(Original) // Map klonen konsole.log(clone.get(1)); // {} console.log(Original === Klon) // falsch konsole.log(original.get(1) === clone.get(1)) // wahr Mehrere Karten zusammenführen lass zuerst = neue Karte([ [1, 'eins'], [2, 'zwei'], [3, 'drei'], ]); lass zweite = neue Karte([ [1, 'uno'], [2, 'macht'] ]); // Wenn beim Zusammenführen zweier Map-Objekte doppelte Schlüsselwerte vorhanden sind, wird ersterer durch letzteren überschrieben. // Der Spread-Operator konvertiert im Wesentlichen ein Map-Objekt in ein Array. let merged = neue Map([...erste, ...zweite]); console.log(merged.get(1)); // uno console.log(merged.get(2)); // dos console.log(merged.get(3)); // drei 5. Kartenserialisierung Da der Schlüssel einer Map jeden beliebigen Datentyp haben kann und JSON nur Zeichenfolgen als Schlüssel zulässt, ist es im Allgemeinen nicht möglich, eine Map in JSON zu konvertieren. Sie können jedoch versuchen, eine Map folgendermaßen zu serialisieren: // Map(1) initialisieren {"key1" => "val1"} const originMap = neue Map([['Schlüssel1', 'Wert1']]) //Serialisieren Sie "[[\"key1\",\"val1\"]]" const mapStr = JSON.stringify(Array.from(originMap.entries())) // Deserialisieren Sie Map(1) {"key1" => "val1"} const cloneMap = neue Map(JSON.parse(mapStr)) 3. Leistungsunterschiede zwischen Karte und Objekt Speichernutzung Die Situation ist von Browser zu Browser unterschiedlich, aber bei einer festgelegten Speichermenge kann Leistung einfügen Map ist etwas schneller und wird empfohlen, wenn viele Suchgeschwindigkeit Der Leistungsunterschied ist minimal, aber Löschleistung Wenn der Code viele Löschvorgänge erfordert, empfiehlt es sich, Damit ist der Artikel darüber, warum wir Map benötigen, wenn wir bereits Das könnte Sie auch interessieren:
|
<<: Absteigender Index in MySQL 8.0
>>: Tiefgreifendes Verständnis der Erstellung und Implementierung von Servlets in Tomcat
app.js: Startdatei oder Einstiegsdatei package.js...
Docker Compose ist ein Docker-Tool zum Definieren...
Bei der Verwendung von MySQL zum Ausführen bestim...
Was ist MySQL Multi-Instance Einfach ausgedrückt ...
Inhaltsverzeichnis 1. Vom Vater zum Sohn 2. Vom S...
Hinweis: Diese Tabelle ist aus dem W3School-Tutor...
Verwenden provide+inject in Vue Zuerst müssen Sie...
In diesem Artikel werden einige der Techniken ausf...
Inhaltsverzeichnis 1. Einfache SELECT-Anweisung 1...
Einführung In den letzten Jahren wurde der Ruf na...
Konfiguration Vorwort Projektaufbau: basierend au...
Inhaltsverzeichnis 1. Implementierung des Zählers...
Das im Projekt aufgetretene Layoutproblem unregel...
<br />Hier ergibt sich ein Widerspruch: In k...
Dieser Artikel beschreibt anhand eines Beispiels,...