VBScript - 组合或连接两个数组

Mil*_*cay 3 vbscript

我的页面是带有VBScript的ASP.我有两个不同的记录集,每个记录集都有自己的数组(通过使用RS.GetRows()方法).基本上,我想将这两个数组合并为一个数组.请参阅下面的演示.

请帮忙,谢谢....

Dim array1
array1(0,0)="a"
array1(0,1)="b"
array1(1,0)="c"
array1(1,1)="d"

Dim array2
array2(0,0)="e"
array2(0,1)="f"
array2(1,0)="g"
array2(1,1)="h"

/////  I want to combine into one array something like this. //////
Dim array1
array1(0,0)="a"
array1(0,1)="b"
array1(1,0)="c"
array1(1,1)="d"
array1(0,2)="e"
array1(0,3)="f"
array1(1,2)="g"
array1(1,3)="h"

/////  Basically, same columm numbers, but adding more data/rows to the existing array. 
OR if this is not doable, is there a way to combine these arrays into a brand new array?


/////  I have this much so far, but couldn't get it to work ///////
For i = 0 to Ubound(array2, 2)
    Redim Preserve array1(i, 1)
    array1(i, 0) = array2(0, i)
    array1(i, 1) = array2(1, i)
Next
Run Code Online (Sandbox Code Playgroud)

Ekk*_*ner 8

动态VBScript数组只能在/最后一个维度上放大.这就是为什么GetRows()返回一个在最后一个维度中带有"可增长"行的数组.

所以你的

Redim Preserve array1(i, 1)  ' trying to grow the first dimension
Run Code Online (Sandbox Code Playgroud)

不管用.

这'有用':

Option Explicit

Dim array1(1, 1)
array1(0,0)="a"
array1(0,1)="b"
array1(1,0)="c"
array1(1,1)="d"
dispArr "array1", array1

Dim array2(1, 1)
array2(0,0)="e"
array2(0,1)="f"
array2(1,0)="g"
array2(1,1)="h"
dispArr "array2", array2

Dim array3 : array3 = mergeArr( array1, array2)
dispArr "array3", array3

Sub dispArr(t, a)
  WScript.Echo "Array:", t
  Dim i, j
  For i = 0 To UBound(a, 2)
      For j = 0 To UBound(a, 1)
          WScript.Stdout.Write a(j, i) & " "
      Next
      WScript.Echo
  Next
End Sub

Function mergeArr(a1, a2)
  ReDim aTmp(Ubound(a1, 1), UBound(a1, 2) + Ubound(a2, 2) + 1)
  Dim i, j, k
  For i = 0 To UBound(a1, 2)
      For j = 0 To UBound(aTmp, 1)
          aTmp(j, i) = a1(j, i)
      Next
  Next
  For k = 0 To UBound(a2, 2)
      For j = 0 To UBound(aTmp, 1)
          aTmp(j, i + k) = a2(j, k)
      Next
  Next
  mergeArr = aTmp
End Function
Run Code Online (Sandbox Code Playgroud)

输出:

cscript 22029206.vbs
Array: array1
a c
b d
Array: array2
e g
f h
Array: array3
a c
b d
e g
f h
Run Code Online (Sandbox Code Playgroud)

但您可能不喜欢行/列布局/顺序.