16

我希望能够做到:

For Each thing In things
End For

经典 ASP - 不是 .NET!

4

6 回答 6

13

像这样的东西?

dim cars(2),x
cars(0)="Volvo"
cars(1)="Saab"
cars(2)="BMW"

For Each x in cars
  response.write(x & "<br />")
Next

请参阅www.w3schools.com

如果要关联键和值,请改用字典对象

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
于 2008-08-11T12:39:46.320 回答
4

无论您的 [事物] 需要在 VBScript 之外编写。

在 VB6 中,您可以编写一个自定义集合类,然后您需要编译为 ActiveX DLL 并在您的网络服务器上注册它以访问它。

于 2008-08-05T13:42:15.593 回答
2

您将获得的最接近的是使用字典(如 Pacifika 所述)

Dim objDictionary
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.CompareMode = vbTextCompare 'makes the keys case insensitive'
objDictionary.Add "Name", "Scott"
objDictionary.Add "Age", "20"

但我像收藏一样循环浏览我的字典

For Each Entry In objDictionary
  Response.write objDictionary(Entry) & "<br />"
Next

您可以通过这种方式循环遍历整个字典,写出如下所示的值:

Scott
20

你也可以这样做

For Each Entry In objDictionary
  Response.write Entry & ": " & objDictionary(Entry) & "<br />"
Next

哪个会产生

 Name: Scott
 Age: 20
于 2008-09-16T19:09:44.407 回答
1

我以前使用过的一种方法是使用集合的一个属性,该属性返回一个数组,可以迭代。

Class MyCollection
    Public Property Get Items
        Items = ReturnItemsAsAnArray()
    End Property
    ...
End Class

像这样迭代:

Set things = New MyCollection
For Each thing in things.Items
    ...
Next
于 2008-11-23T04:40:57.337 回答
0

正如布雷特所说,最好使用 vb 组件来创建集合。除非基于特定需要的应用程序,否则字典对象在 ASP 中不是很常用。

于 2008-09-23T06:15:19.207 回答
0

使用 VB 脚本字典对象时要非常小心!
刚刚发现这个“自动生存”的东西,这个对象是原生的:http://en.wikipedia.org/wiki/Autovivification

因此,当您需要比较值时,切勿使用布尔比较,例如:
If objDic.Item("varName") <> "" Then...
这将自动将键“ varName”添加到字典中(如果它不存在,则为空值),以便进行评估布尔表达式。

如果需要,请改用If objDic.Exists("varName").

只需花几天时间敲墙,使用此 Microsoft“功能”...
vbscript-dictionary-object-creating-a-key-which-never-existed-but-present-in-another-object

于 2014-05-21T08:43:36.047 回答