Arrays 函数比较Vbscript中的数组

Arrays 函数比较Vbscript中的数组,arrays,vbscript,hp-uft,Arrays,Vbscript,Hp Uft,我试图在vbscript中为UFT编写一个函数,用于比较两个数组,并确保两个数组中的所有值完全匹配。 但是,值的顺序可能不一致 Function CompareArrays(array1, array2) Dim i,j Dim arrkeys1,arrKeys2 arrkeys1 = array1.keys arrkeys2 = array2.keys 'Do they have the same number of items? If array1.C

我试图在vbscript中为UFT编写一个函数,用于比较两个数组,并确保两个数组中的所有值完全匹配。 但是,值的顺序可能不一致

 Function CompareArrays(array1, array2)

   Dim i,j
   Dim arrkeys1,arrKeys2
   arrkeys1 = array1.keys
   arrkeys2 = array2.keys

  'Do they have the same number of items?
   If array1.Count <> array2.Count Then
    CompareArrays = False
    Exit Function
   End If

  'Compare keys and values

  For i = 0 To UBound(arrKeys2)

      If Not array2.Exists(arrKeys1(i)) Then
     'array1 has a key which array2 doesn't have  
      CompareArrays = False
      Exit Function         
      End If

        For j  = 0 To Ubound(arrkeys1)

          If array1(i) <> array2(j)  Then
            print "Value"& array1(i) " not found in current position" 
            CompareArrays = False
            Else 
            print "Value Found"
            CompareArrays =True
          End If
        Next'j 
  Next 'i 

  End Function

非常感谢您的帮助。

在进行比较之前,您应该尝试订购两个阵列,我没有visual basic编辑器,但这可能会起作用:

Imports System
Imports Microsoft.VisualBasic

Public Module Module1

    Public Sub Main()
        dim a1 as Array = {1,2,3}
        dim a2 as Array = {3,2,1}
        dim result = CompareArrays(a1,a2)
        Console.WriteLine("comparison = " & result)

        dim a3 as Array ={"a","b","c"}
        dim a4 as Array = {"b","c","h"}

        result = CompareArrays(a3,a4)
        Console.WriteLine("comparison = " & result)

    End Sub

    Function CompareArrays(array1, array2) as Boolean
        Console.WriteLine(array1)

        If array1.Length <> array2.Length Then
            return false
        End If
       Array.Sort(array1)
       Array.Sort(array2)

        For i as integer = 0 To UBound(array1)
           if(array1(i) <> array2(i))
            return false
           End If
        Next
    return true
    End Function


End Module
我发现了一个vb在线编译器,示例如下:

在进行比较之前,您应该尝试对两个数组进行排序,我没有visual basic编辑器,但这可能会起作用:

Imports System
Imports Microsoft.VisualBasic

Public Module Module1

    Public Sub Main()
        dim a1 as Array = {1,2,3}
        dim a2 as Array = {3,2,1}
        dim result = CompareArrays(a1,a2)
        Console.WriteLine("comparison = " & result)

        dim a3 as Array ={"a","b","c"}
        dim a4 as Array = {"b","c","h"}

        result = CompareArrays(a3,a4)
        Console.WriteLine("comparison = " & result)

    End Sub

    Function CompareArrays(array1, array2) as Boolean
        Console.WriteLine(array1)

        If array1.Length <> array2.Length Then
            return false
        End If
       Array.Sort(array1)
       Array.Sort(array2)

        For i as integer = 0 To UBound(array1)
           if(array1(i) <> array2(i))
            return false
           End If
        Next
    return true
    End Function


End Module
我发现了一个vb在线编译器,示例如下:

在VBScript中,数组不是具有Keys/Exists/Count方法的对象

我认为您实际上是在比较存储键和值的两个dictionary对象

下面的脚本将比较字典

 Function CompareArrays(array1, array2)

        'Do they have the same number of items?
        If array1.Count <> array2.Count Then
            CompareArrays = False
            Exit Function
        End If

        'Compare keys and values
        For Each Key in array1.Keys

                'Check Keys
                If NOT(array2.Exists(Key)) Then
                    CompareArrays = False
                    Exit Function
                End If

                'Check Value
                If array1.Item(Key) <> array2.Item(Key) Then
                    CompareArrays = False
                    Exit Function
                End If
        Next

        CompareArrays = True

  End Function
函数比较数组(array1,array2)
“他们的物品数量相同吗?
如果数组1.计数数组2.计数,则
比较arlays=False
退出功能
如果结束
'比较键和值
对于阵列中的每个键1.键
“检查钥匙
如果不存在(array2.Exists(Key)),则
比较arlays=False
退出功能
如果结束
'检查值
如果数组1.项(键)数组2.项(键),则
比较arlays=False
退出功能
如果结束
下一个
comparararays=True
端函数

在VBScript中,数组不是具有Keys/Exists/Count方法的对象

我认为您实际上是在比较存储键和值的两个dictionary对象

下面的脚本将比较字典

 Function CompareArrays(array1, array2)

        'Do they have the same number of items?
        If array1.Count <> array2.Count Then
            CompareArrays = False
            Exit Function
        End If

        'Compare keys and values
        For Each Key in array1.Keys

                'Check Keys
                If NOT(array2.Exists(Key)) Then
                    CompareArrays = False
                    Exit Function
                End If

                'Check Value
                If array1.Item(Key) <> array2.Item(Key) Then
                    CompareArrays = False
                    Exit Function
                End If
        Next

        CompareArrays = True

  End Function
函数比较数组(array1,array2)
“他们的物品数量相同吗?
如果数组1.计数数组2.计数,则
比较arlays=False
退出功能
如果结束
'比较键和值
对于阵列中的每个键1.键
“检查钥匙
如果不存在(array2.Exists(Key)),则
比较arlays=False
退出功能
如果结束
'检查值
如果数组1.项(键)数组2.项(键),则
比较arlays=False
退出功能
如果结束
下一个
comparararays=True
端函数

不会。它是VB.Net。数组不是VBScript中的对象。我更新了我的答案。我找到了一个在线VB编辑器,希望帮助不会出现。它是VB.Net。数组不是VBScript中的对象。我更新了我的答案我找到了一个在线VB编辑器,希望帮助我用一个在线工作示例更新我的答案,我希望帮助我用一个在线工作示例更新我的答案,我希望帮助这是完美的!非常感谢。@Dighate,我不检查任何订单!对于您的输入,我将“True”作为输出。再次检查。结果表明,UFT Ide无法识别array.keys语句中的每个“键”。但是,当我将key定义为key=array1.keys时,它起作用了。这很有效,非常感谢。这太完美了!非常感谢。@Dighate,我不检查任何订单!对于您的输入,我将“True”作为输出。再次检查。结果表明,UFT Ide无法识别array.keys语句中的每个“键”。但是,当我将key定义为key=array1.keys时,它起作用了。这很有效,非常感谢。