VBS 数组以最简单的方式
VBS Array in its most simple way
我无法在 VBS 中创建未定义的数组。
只要需要就可以了。我不想用 Dim arrnode(10)
声明一些限制,例如 10 左右。我要无限量的。
我试过了:
Dim arrnode
arrnode(1) = "a"
arrnode(2) = "b"
arrnode(3) = "c"
arrnode(4) = "d"
还有很多变体,例如:
Dim arrnode()
Dim arrnode() As Variant
Dim arrnode() As Variant()
Etc.etc。
None 的作品。
仅错误。
请举一个有效的例子。
我不是在寻找解释,因为我无法理解我在网上一遍又一遍地找到的 "variant" 解释。
我只是迫切需要一个非常简单的数组。
在 VBScript 中有多种创建数组的方法
具有定义大小的数组
Dim arrTest1(3)
arrTest1(0) = "1"
arrTest1(1) = "2"
arrTest1(2) = "3"
arrTest1(3) = "4"
没有定义大小的数组
Dim arrTest2()
ReDim arrTest2(3)
arrTest2(0) = "1"
arrTest2(1) = "2"
arrTest2(2) = "3"
arrTest2(3) = "4"
使用Array
函数创建数组
Dim arrTest3
arrTest3 = Array ("1", "2", "3", "4")
在 VBScript 中,数组从零开始,您不能在声明数组时定义变量类型(例如 as Variant
)
如果您不确定数组的大小,可以使用第二个选项。您以后可以随时 ReDim
它来更改其大小。如果你想保护数组数据,请不要忘记使用 Preserve
关键字 ReDiming
it
要创建具有 10 个槽的静态(不可调整大小)数组,请使用
Dim arr(9)
要创建具有 10 个插槽的动态(可调整大小)数组,请使用
ReDim arr(9)
在每种情况下,参数都是数组的上边界。由于 VBScript 数组是从零开始的(索引从 0 开始),即元素数减一。
如果您想在事先不知道所需大小的情况下追加到数组,请将其创建为空动态数组:
ReDim arr(-1)
要附加到该数组,您需要先增加其大小:
ReDim Preserve arr(UBound(arr)+1)
arr(UBound(arr)) = "a"
ReDim Preserve arr(UBound(arr)+1)
arr(UBound(arr)) = "b"
...
您可以将其包装在一个过程中以稍微简化处理:
Sub AppendToArray(ByRef a, v)
ReDim Preserve a(UBound(a)+1)
a(UBound(a)) = v
End Sub
AppendToArray arr, "a"
AppendToArray arr, "b"
...
但是请注意,在保留其内容的同时调整数组大小是一项缓慢的操作,因为 VBScript 创建了一个增加大小的新数组,移动现有数组的内容,然后用新数组替换现有数组.
否则 VBScript 不支持动态附加到数组。作为替代方案,您可以使用 System.Collections.ArrayList
class,它支持动态调整大小:
Set arr = CreateObject("System.Collections.ArrayList")
arr.Add "a"
arr.Add "b"
...
我无法在 VBS 中创建未定义的数组。
只要需要就可以了。我不想用 Dim arrnode(10)
声明一些限制,例如 10 左右。我要无限量的。
我试过了:
Dim arrnode
arrnode(1) = "a"
arrnode(2) = "b"
arrnode(3) = "c"
arrnode(4) = "d"
还有很多变体,例如:
Dim arrnode()
Dim arrnode() As Variant
Dim arrnode() As Variant()
Etc.etc。 None 的作品。 仅错误。
请举一个有效的例子。 我不是在寻找解释,因为我无法理解我在网上一遍又一遍地找到的 "variant" 解释。 我只是迫切需要一个非常简单的数组。
在 VBScript 中有多种创建数组的方法
具有定义大小的数组
Dim arrTest1(3)
arrTest1(0) = "1"
arrTest1(1) = "2"
arrTest1(2) = "3"
arrTest1(3) = "4"
没有定义大小的数组
Dim arrTest2()
ReDim arrTest2(3)
arrTest2(0) = "1"
arrTest2(1) = "2"
arrTest2(2) = "3"
arrTest2(3) = "4"
使用Array
函数创建数组
Dim arrTest3
arrTest3 = Array ("1", "2", "3", "4")
在 VBScript 中,数组从零开始,您不能在声明数组时定义变量类型(例如 as Variant
)
如果您不确定数组的大小,可以使用第二个选项。您以后可以随时 ReDim
它来更改其大小。如果你想保护数组数据,请不要忘记使用 Preserve
关键字 ReDiming
it
要创建具有 10 个槽的静态(不可调整大小)数组,请使用
Dim arr(9)
要创建具有 10 个插槽的动态(可调整大小)数组,请使用
ReDim arr(9)
在每种情况下,参数都是数组的上边界。由于 VBScript 数组是从零开始的(索引从 0 开始),即元素数减一。
如果您想在事先不知道所需大小的情况下追加到数组,请将其创建为空动态数组:
ReDim arr(-1)
要附加到该数组,您需要先增加其大小:
ReDim Preserve arr(UBound(arr)+1)
arr(UBound(arr)) = "a"
ReDim Preserve arr(UBound(arr)+1)
arr(UBound(arr)) = "b"
...
您可以将其包装在一个过程中以稍微简化处理:
Sub AppendToArray(ByRef a, v)
ReDim Preserve a(UBound(a)+1)
a(UBound(a)) = v
End Sub
AppendToArray arr, "a"
AppendToArray arr, "b"
...
但是请注意,在保留其内容的同时调整数组大小是一项缓慢的操作,因为 VBScript 创建了一个增加大小的新数组,移动现有数组的内容,然后用新数组替换现有数组.
否则 VBScript 不支持动态附加到数组。作为替代方案,您可以使用 System.Collections.ArrayList
class,它支持动态调整大小:
Set arr = CreateObject("System.Collections.ArrayList")
arr.Add "a"
arr.Add "b"
...