Verwenden von ES5-Array-Methoden mit ES6-Generatoren

8

Wie können die neuen ES5-Array-Funktionen mit ES6-Generatoren korrekt verwendet werden? Muss ich das Iterable zuerst explizit in ein Array konvertieren, oder gibt es einen besseren Weg? Zum Beispiel:

%Vor%     
Lesleh 16.02.2015, 12:03
quelle

3 Antworten

8

Generatorfunktionen geben Iterator -Objekte zurück. Die Iterator-API enthält keine Array-Methoden höherer Ordnung, z. B. map , reduce usw., daher müssen Sie ein intermediäres Array erstellen (oder eine Bibliothek wie wu.js ).

Sie können den Verteilungsoperator verwenden, um ein Array zu erstellen von einem (endlichen) Iterator:

%Vor%     
joews 16.02.2015, 12:19
quelle
5

Erstellen Sie das Array mit Array.from :

%Vor%

Array.from erstellt ein Array aus einem iterablen Array. Siehe Ссылка .

Wenn Sie das Reduzieren durchführen möchten, ohne das Array zu erstellen, müssen Sie am Ende folgendes tun:

%Vor%     
user663031 16.02.2015 13:18
quelle
2

Da Array.from derzeit nicht in Chrome funktioniert, brauchte ich einen anderen Weg, um einen Iterator in ein Array zu konvertieren.

(Natürlich können Sie es mit einem Polyfill unterlegen )

%Vor%

Aus ähnlichen Gründen füge ich dem Prototyp einer Map ein "toArray" hinzu, so dass ich einen Iterator grundsätzlich in ein Array umwandle, so dass man seine funktionsorientierten Methoden verwenden kann; Natürlich ist jedes Element des Arrays ein [Schlüssel, Wert] Tupel (genau wie in seinem Map.entries() )

%Vor%

Dann können Sie es als Array verwenden - denken Sie jedoch an den Ansatz [Schlüssel, Wert]!

%Vor%

Dies wird die Werte der Karte zurückgeben (ok, natürlich nicht besonders nützlich!)

Wenn Sie eine Standardschleife bevorzugen:

%Vor%     
Stefano 25.02.2015 14:21
quelle

Tags und Links