Nehmen wir an, ich habe die folgende Karte:
let myMap = new Map().set('a', 1).set('b', 2);
Und ich möchte ['a', 'b'] basierend auf dem oben Gesagten erhalten. Meine derzeitige Lösung scheint so lang und schrecklich.
let myMap = new Map().set('a', 1).set('b', 2);
let keys = [];
for (let key of myMap)
keys.push(key);
console.log(keys);
Es muss einen besseren Weg geben, nein?
javascript
dictionary
ecmascript-6
Lilleman
quelle
quelle
Array.from(Map.keys())
.Map
.Array.from(Map.values())
- Wenn Sie für den Fall Werte anstelle von Schlüsseln benötigen.Antworten:
Map.keys()
Gibt einMapIterator
Objekt zurück, das in Folgendes konvertiertArray
werden kannArray.from
:BEARBEITEN: Sie können iterierbare Objekte auch mithilfe der Spread-Syntax in ein Array konvertieren
quelle
this.map.values().slice is not a function
. Vielleicht sollte ich aktualisieren.slice()
Aufruf vor dem Spread-Operator ausgeführt wird. Versuchen Sie[ ... Array.from(map.values()).slice(0) ]
const fooMap = new Map<number, string>(); const fooArray = [...fooMap.keys()];
Folgendes: TS2461: Typ 'IterableIterator <Nummer>' ist kein Array-Typ. Dies ist in TypeScript also nicht zulässig. Array.from funktioniert wie erwartet...."abc"
einsteigen["a","b","c"]
, was in TS nicht möglich ist...."abc"
noch...("abc")
arbeiten in der Chrome-Konsole, die ES6 unterstützt?Mit dem Spread-Operator können Sie den Map.keys () - Iterator in ein Array konvertieren .
quelle
Array.from(myMap.keys())
funktioniert nicht in Google-Anwendungsskripten.Der Versuch, es zu verwenden, führt zu dem Fehler
TypeError: Cannot find function from in object function Array() { [native code for Array.Array, arity=1] }
.Gehen Sie folgendermaßen vor, um eine Liste der Schlüssel in GAS zu erhalten:
quelle
map.keys()
angezeigt, dass der Rückgabewert nicht iterierbar ist.Ich brauche etwas Ähnliches mit eckiger reaktiver Form:
quelle
Nicht gerade die beste Antwort auf die Frage, aber dieser Trick
new Array(...someMap)
hat mich ein paar Mal gerettet, wenn ich sowohl Schlüssel als auch Wert benötige, um das benötigte Array zu generieren. Zum Beispiel, wenn Reaktionskomponenten aus dem Map-Objekt basierend auf Schlüssel- und Wertwerten erstellt werden müssen.quelle
OK, lassen Sie uns etwas umfassender gehen und mit der Map für diejenigen beginnen, die diese Funktion in JavaScript nicht kennen ... MDN sagt:
Wie Sie bereits erwähnt haben, können Sie ganz einfach eine Instanz von Map mit einem neuen Schlüsselwort erstellen ... In Ihrem Fall:
Also mal sehen ...
Die Art und Weise, wie Sie es erwähnt haben, ist in Ordnung, aber ja, es gibt präzisere Möglichkeiten, dies zu tun ...
Map verfügt über viele Methoden, die Sie verwenden können, z. B.
set()
die Sie bereits zum Zuweisen der Schlüsselwerte verwendet haben ...Eine davon ist
keys()
die, die alle Schlüssel zurückgibt ...In Ihrem Fall wird Folgendes zurückgegeben:
und Sie können sie einfach mithilfe von ES6- Methoden wie dem Spread-Operator in ein Array konvertieren ...
quelle