Einfache Objektschlüssel müssen Zeichenfolgen sein, wohingegen a Map
Schlüssel eines beliebigen Typs haben kann.
Aber ich habe wenig Gebrauch davon in der Praxis. In fast allen Fällen benutze ich trotzdem Strings als Schlüssel. Und vermutlich new Map()
ist langsamer als {}
. Gibt es noch einen anderen Grund, warum es besser sein könnte, ein Map
statt eines einfachen Objekts zu verwenden?
javascript
ecmascript
es6
Callum
quelle
quelle
map.set('foo', 123)
schneller alsobj.foo = 123
? Wenn ja, ist das sehr überraschendAntworten:
Es gibt einige Gründe, warum ich für die Speicherung von Laufzeitdaten (Caches usw.) lieber
Map
s als plain objects ({}
) verwende:.size
Eigenschaft teilt mir mit, wie viele Einträge in dieser Karte vorhanden sind..clear()
,.forEach()
usw;Alle anderen Fälle, wie die Übergabe von Funktionsargumenten, das Speichern von Konfigurationen usw., werden mit einfachen Objekten geschrieben.
Denken Sie auch daran: Versuchen Sie nicht, Ihren Code zu früh zu optimieren. Verschwenden Sie nicht Ihre Zeit damit, Benchmarks für einfache Objekte im Vergleich zu Maps durchzuführen, es sei denn, Ihr Projekt leidet unter Leistungsproblemen.
quelle
===
:)Map
verwendet den SameValueZero-Algorithmus. developer.mozilla.org/en-US/docs/Web/JavaScript/…Map
Verwendung dieses oder jenes gesagt ?Ich bin mir nicht sicher, aber ich denke, dass die Leistung KEIN Grund ist, Maps zu verwenden. Schauen Sie sich diese aktualisierte jsperf-Seite an:
http://jsperf.com/es6-map-vs-object-properties/73
Es sieht so aus, als wären Objekte (zumindest beim Umgang mit Strings) viel schneller als Maps für die Grundeinstellung und das Abrufen.
quelle
Die anderen Antworten erwähnen keinen letzten Unterschied zwischen Objekten und
Map
s:Zitat aus MDN , Hervorhebung von mir
Dies war der Hauptgrund, warum ich mich zum
Map
ersten Mal für ein Projekt entschieden habe. Ich hatte ein normales Objekt, das ich in einem anzeigen musste<table>
, wobei jede Eigenschaft in eine bestimmte Zeile ging.Ich habe eine Funktion geschrieben, um ein Objekt
Map
gemäß einer gewünschten Tastenreihenfolge in eine umzuwandeln :Dann könnte die Karte in der gewünschten Reihenfolge durchlaufen werden:
Dies ist natürlich ein wenig umständlich, da man es genauso gut anzeigen kann, wenn man die Eigenschaftsreihenfolge durchläuft, ohne dabei eine zu erstellen
Map
:Wenn Sie jedoch über eine Reihe solcher Objekte verfügen und diese an vielen Stellen anzeigen möchten, ist es zunächst sinnvoll, sie alle in Karten zu konvertieren.
quelle