Fügen Sie ein Element zum Array in VBScript hinzu
Wie fügen Sie ein Element zu einem vorhandenen array in VBScript?
Ist es ein VBScript-entspricht der push-Funktion in Javascript?
d.h.
myArray hat drei Elemente, "Äpfel", "Orangen", "Bananen" und ich möchte hinzufügen, "Wassermelonen", um das Ende des Arrays.
InformationsquelleAutor der Frage Choy | 2011-01-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Arrays sind nicht sehr dynamisch in VBScript. Sie müssen verwenden Sie die ReDim Preserve Aussage zu wachsen, das vorhandene array, so kann es Platz für einen zusätzlichen Element:
InformationsquelleAutor der Antwort Frédéric Hamidi
Gibt es ein paar Möglichkeiten, nicht einschließlich einer benutzerdefinierten COM-oder ActiveX-Objekt
Sortieren (vorwärts, rückwärts, Benutzerdefiniert), einfügen, entfernen,
binarysearch-Methode, gleich, toArray, und toString
Mit dem code unten, habe ich gefunden Redim Preserve ist am schnellsten unten, 54000, Wörterbuch schnellsten von 54000, 690000, und die Array-Liste ist am schnellsten oben 690000. Ich Neige dazu, verwenden ArrayList zu schieben, weil der Sortier-und array-Konvertierung.user326639 zur Verfügung gestellt FastArray, das ist so ziemlich das Schnellste.
Wörterbücher sind nützlich bei der Suche für den Wert und die Rückkehr der index (also die Feldnamen), oder für die Gruppierung und aggregation (Histogramme, Gruppe und hinzufügen, Gruppe und verketten von strings, eine Gruppe und drücken Sie sub-arrays). Bei der Gruppierung auf den Tasten, eingestellt CompareMode für den Fall, in/Empfindlichkeit, und überprüfen Sie die "exists" - Eigenschaft, bevor Sie "hinzufügen"-ing.
Redim würde nicht sparen Sie viel Zeit für ein array, aber es ist nützlich für ein Wörterbuch von arrays.
InformationsquelleAutor der Antwort Will
Für Ihre Kopie und paste Leichtigkeit
Verwendet, wie so
InformationsquelleAutor der Antwort Charles Clayton
Leichte Veränderung der FastArray von oben:
Gibt es keinen Punkt in der Prüfung
UBound(a)
in jedem Zyklus der, wenn wir genau wissen, Wann es änderungen.Habe ich es geändert, so dass es überprüft hat
UBound(a)
kurz vor dem für beginnt und dann nur jedes mal dieReDim
heißtAuf meinem computer die alte Methode nahm 7.52 Sekunden für einen imax von 10 Millionen.
Die neue Methode nahm 5.29 Sekunden für einen imax von 10 Millionen, das bedeutet eine Leistungssteigerung von über 20% (für 10 Millionen wird versucht, offensichtlich ist dieser Prozentsatz hat eine direkte Beziehung zu der Anzahl der versuche)
InformationsquelleAutor der Antwort cog
dies eine Art von spät aber trotzdem und es ist auch etwas schwierig
abgeben und mir sagen, ob das funktionieren kann
oder zunächst speichern Sie alle Daten in string und später aufgeteilt für die array
InformationsquelleAutor der Antwort ddw147
Nicht eine Antwort Oder Warum 'tricky' ist schlecht:
InformationsquelleAutor der Antwort Ekkehard.Horner