Hauptunterschied zwischen Objekt und MAP mit Beispiel :
es ist die Reihenfolge der Iteration in der Schleife, in Map folgt sie der Reihenfolge, wie sie bei der Erstellung festgelegt wurde, während sie in OBJECT nicht gilt.
SEE: OBJEKT
const obj = {};
obj.prop1 = "Foo";
obj.prop2 = "Bar";
obj['1'] = "day";
console.log(obj)
**OUTPUT: {1: "day", prop1: "Foo", prop2: "Bar"}**
MAP
const myMap = new Map()
// setting the values
myMap.set("foo", "value associated with 'a string'")
myMap.set("Bar", 'value associated with keyObj')
myMap.set("1", 'value associated with keyFunc')
OUTPUT:
**1. 0: Array[2]
1. 0: "foo"
2. 1: "value associated with 'a string'"
2. 1: Array[2]
1. 0: "Bar"
2. 1: "value associated with keyObj"
3. 2: Array[2]
1. 0: "1"
2. 1: "value associated with keyFunc"**
2 Stimmen
Mögliche Duplikate von Elemente ordnen - for (... in ...) Schleife in javascript
5 Stimmen
Auch relevant: Führt ES6 eine wohldefinierte Reihenfolge der Aufzählung für Objekteigenschaften ein?
9 Stimmen
Die akzeptierte Antwort ist hier nicht mehr zutreffend. Aktuelle Antworten finden Sie hier.
1 Stimmen
@T.J.Crowder Könnten Sie etwas näher darauf eingehen, warum die akzeptierte Antwort nicht mehr stimmt? Die Frage, die Sie verlinkt haben, scheint darauf hinauszulaufen, dass die Reihenfolge der Eigenschaften immer noch nicht per Spezifikation garantiert ist.
3 Stimmen
@zero298: Die akzeptierte Antwort auf diese Frage beschreibt eindeutig die angegeben Reihenfolge der Eigenschaften ab ES2015+. Legacy-Operationen (
for-in
,Object.keys
) müssen es nicht (offiziell) unterstützen, aber es gibt es jetzt bestellen. (Inoffiziell: Firefox, Chrome und Edge befolgen alle die angegebene Reihenfolge, selbst in for-in und Object.keys, wo dies offiziell nicht vorgeschrieben ist: jsfiddle.net/arhbn3k2/1 )0 Stimmen
HINWEIS:
delete obj1.prop1
garantiert auch nicht die Reihenfolge der Schlüssel - siehe developer.mozilla.org/de-US/docs/Web/JavaScript/Reference/0 Stimmen
Ist damit Ihre Frage beantwortet? Führt ES6 eine wohldefinierte Reihenfolge der Aufzählung für Objekteigenschaften ein?
2 Stimmen
Und jetzt, ab ES2020, sogar
for-in
hat eine definierte Reihenfolge; ich habe die diese Antwort mit dem aktuellen Stand der Dinge.