VBscript在2d数组中搜索值

时间:2014-04-04 12:05:58

标签: vbscript multidimensional-array

我有来自XML的2d数组。 XML的一个例子:

  <string-array name="array1">
    <field name="City" type="string">Moscow</field>
    <field name="Id" type="number">10</field> (p.s. ID is unique within array)
    <field name="Version" type="number">2</field>
    .......
  </string-array>

引用它:

For i=0 to NodeK.length-1
    array1(0,i)=NodeK(i).getAttribute("name")
    array1(1,i)=NodeK(i).text
Next

所以2d数组看起来像:

array1(0,0)="City"
array1(1,0)="Moscow"
array1(0,1)="ID"
array1(1,1)=10
array1(0,2)="Version"
array1(1,2)=2

任务是获取ID的值,以便进一步使用它(在SysId变量中)。以下代码无法正常运行

For i=LBound(array1,1) to Ubound (array1,1)
    For j=Lbound(array1,2) to Ubound(array1,2)
        if j=0 then
            if  array(i,0)="ID"   Then
                SysID=array(i,1)
                MsgBox "New ID is: " & ID, 64
            end if
        End If
    Next
Next

一旦找到值(在我们的例子中为ID = 10),循环就应该退出。 提前谢谢!

1 个答案:

答案 0 :(得分:0)

只需将数组写为表

City    ID  Version
Moscow  10  2

然后你看到你需要循环'第0行的'cols'找到密钥并找到相应的'col of row 1'来获取值。

在代码中:

Option Explicit

Dim array1(1, 2)
array1(0,0)="City"
array1(1,0)="Moscow"
array1(0,1)="ID"
array1(1,1)=10
array1(0,2)="Version"
array1(1,2)=2

Dim sFnd : sFnd = "ID"

Dim i
For i = 0 To UBound(array1, 2)
    WScript.Echo array1(0, i)
    If sFnd = array1(0, i) Then
       WScript.Echo array1(0, i), "=>", array1(1, i)
       Exit For
    End If
Next

输出:

cscript 22862344.vbs
City
ID
ID => 10