Wie durchlaufe ich eine Sammlung im klassischen ASP?
-
08-06-2019 - |
Frage
Ich möchte Folgendes können:
For Each thing In things
End For
KLASSISCHES ASP – NICHT .NET!
Lösung
Was auch immer Ihre [Dinge] sind, sie müssen außerhalb von VBScript geschrieben werden.
In VB6, Sie können eine benutzerdefinierte Sammlungsklasse schreiben, dann müssen Sie eine ActiveX-DLL kompilieren und diese auf Ihrem Webserver registrieren, um darauf zugreifen zu können.
Andere Tipps
Etwas wie das?
dim cars(2),x
cars(0)="Volvo"
cars(1)="Saab"
cars(2)="BMW"
For Each x in cars
response.write(x & "<br />")
Next
Sehen www.w3schools.com.
Wenn Sie Schlüssel und Werte zuordnen möchten Verwenden Sie ein Wörterbuchobjekt stattdessen:
Dim objDictionary
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.Add "Name", "Scott"
objDictionary.Add "Age", "20"
if objDictionary.Exists("Name") then
' Do something
else
' Do something else
end if
Das Beste, was Sie erreichen werden, ist die Verwendung eines Wörterbuchs (wie von Pacifika erwähnt).
Dim objDictionary
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.CompareMode = vbTextCompare 'makes the keys case insensitive'
objDictionary.Add "Name", "Scott"
objDictionary.Add "Age", "20"
Aber ich durchlaufe meine Wörterbücher wie eine Sammlung
For Each Entry In objDictionary
Response.write objDictionary(Entry) & "<br />"
Next
Auf diese Weise können Sie das gesamte Wörterbuch durchlaufen und die Werte ausschreiben, die wie folgt aussehen würden:
Scott
20
Sie können dies auch tun
For Each Entry In objDictionary
Response.write Entry & ": " & objDictionary(Entry) & "<br />"
Next
Was produzieren würde
Name: Scott
Age: 20
Ein Ansatz, den ich zuvor verwendet habe, besteht darin, eine Eigenschaft der Sammlung zu verwenden, die ein Array zurückgibt, über das iteriert werden kann.
Class MyCollection
Public Property Get Items
Items = ReturnItemsAsAnArray()
End Property
...
End Class
Iterieren Sie wie folgt:
Set things = New MyCollection
For Each thing in things.Items
...
Next
Wie Brett sagte, ist es besser, eine VB-Komponente zum Erstellen von Sammlungen zu verwenden.Wörterbuchobjekte werden in ASP nicht sehr häufig verwendet, es sei denn, es handelt sich um spezifische, bedarfsorientierte Anwendungen.
Seien Sie bei der Verwendung von VB Script Dictionary Object SEHR vorsichtig!
Entdecken Sie das einfach“Autovivikation" Ding, nativ für dieses Objekt: http://en.wikipedia.org/wiki/Autovivification
Wenn Sie also Werte vergleichen müssen, verwenden Sie NIEMALS einen Boolen-Vergleich wie:
If objDic.Item("varName") <> "" Then
...
Dieser Wille automatisch füge den Schlüssel hinzu "varName
" zum Wörterbuch (falls nicht vorhanden, mit einem leeren Wert), um den booleschen Ausdruck weiter auszuwerten.
Bei Bedarf stattdessen verwenden If objDic.Exists("varName")
.
Verbringen Sie einfach ein paar Tage damit, mit diesem Mcrosoft an Wände zu klopfen.Besonderheit"...
vbscript-Wörterbuch-Objekt-erstellt-einen-Schlüssel-der-nie-existierte-aber-in-einem-anderen-Objekt vorhanden ist