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
1. Wechseln Sie in das Verzeichnis /etc/init.d: ...
Inhaltsverzeichnis 1. Abrufen über --skip-grant-t...
Erstellen Sie zunächst ein spezielles Projektverz...
HTML <dl> Tag #Definition und Verwendung Da...
Inhaltsverzeichnis 1. Komponenteneinführung 2. Qu...
Vorwort smb ist der Name eines Protokolls, das fü...
Möglicherweise haben Sie gerade ein MySQL-Passwor...
Wenn Sie kein Linux-System haben, finden Sie unte...
Aufgrund von Unternehmensanforderungen müssen zwe...
In diesem Artikelbeispiel wird der spezifische Ja...
1. Entpacken Sie MySQL 8.0.16 Der Ordner dada und...
1. Installieren Sie Abhängigkeitspakete yum -y in...
In der Datenbank führen sowohl die Schlüsselwörte...
eins. Vorwort <br />Sie werden diese Art von...
SSH steht für Secure Shell, ein sicheres Übertrag...