In crossecript über einen String iterieren, ohne ein Array erstellen zu müssen

7

Ich habe mehrere Stellen in meinem Code, wo ich über eine Zeichenkette iterieren und die Operationen char by char ausführen muss. Meine node.js-Anwendung muss das Dutzende Male pro Anforderung tun, und oft kann die Länge der Zeichenfolgen ziemlich lang sein.

Der einzige Weg, den ich gesehen habe, um ein Javascript wie das folgende in coffeescript zu konvertieren, ist ein Array basierend auf der Länge der Zeichenkette zu erstellen. Das Problem dabei ist, dass es auf der Hardware-Seite noch etwas zu tun gibt, zusätzlichen Speicher beansprucht und einfach unnötig erscheint (meine Knotenanwendung verarbeitet dgrams - bis zu tausende pro Sekunde -, so dass diese zusätzliche Arbeit summiert) / p>

Der JavaScript-Weg:

%Vor%

Der vorgeschlagene CoffeeScript-Weg

%Vor%

Ich denke, es ist albern, die Erstellung eines Array-Objekts zu erzwingen, wenn die traditionelle for-Schleife diesen Schritt aus Hardware-Sicht nicht durcheinander bringen muss.

Meine einzige Arbeit, die ich gefunden habe, ist while-Schleifen zu verwenden wie:

%Vor%

Während das funktioniert, ist das viel ausführlicher als die einfache JavaScript-Methode, einfach eine einfache for-Schleife zu verwenden.

Gibt es eine Möglichkeit, eine for-Schleife in CoffeeScript zu verwenden, ohne überflüssige Arrays generieren zu müssen, um grundlegende Iterationen durchzuführen?

    
Dan 05.12.2012, 15:10
quelle

3 Antworten

13

Es erstellt tatsächlich kein Array, wenn es nicht muss. Sehen Sie sich das kompilierte JS an. Dieses CoffeeScript:

%Vor%

Erzeugt das folgende JavaScript:

%Vor%

Es wurde kein Array erstellt.

(Subtrahieren von 1 bis .length um ein undefiniertes zu vermeiden)

    
vcsjones 05.12.2012, 15:20
quelle
5

Sie können auch über die Zeichenfolge selbst iterieren:

%Vor%     
epidemian 05.12.2012 16:01
quelle
2

In JavaScript (und damit auch CoffeeScript) kann auf strings wie auf arrays zugegriffen werden:

%Vor%

Ich sehe nicht, dass Sie Arrays in einer dieser Schleifen initialisieren.

Sie sollten in Ihren CoffeeScript-Dateien jedoch auch einfaches JavaScript verwenden können, wenn das das Problem löst.

    
Cerbrus 05.12.2012 15:17
quelle

Tags und Links