我有两个未排序且可能长度不同的数组,我想创建一个只包含公共元素的新数组。我需要一个像这样的功能 LotusScript中的newArray = commonElements(Array1,Array2)。
查看是否有代码示例但找不到代码示例。已经有点能够创建这个,但循环比我认为应该是必要的更多。
你可以指点我一个解决方案吗?答案 0 :(得分:1)
此函数返回两个数组的公共元素:
Function commonElements(array1 As Variant, array2 As Variant) As Variant
Dim newArray() As Variant
Dim i As Integer
i=0
ForAll v In array1
If ArrayGetIndex(array2, v, 0) >= 0 Then
ReDim Preserve newArray(i)
newArray(i) = v
i = i + 1
End If
End ForAll
commonElements = newArray
End Function
答案 1 :(得分:1)
这适用于字符串数组,我没有使用数字进行测试:
FullTrim(ArrayReplace(src1, ArrayReplace(src1, src2, Null), Null))
答案 2 :(得分:0)
我使用过Knut的解决方案,但需要能够比较两个未知长度的数组。因此修改了ForAll必须在两个数组中的较长时间内循环:
Function commonElements(array1 As Variant, array2 As Variant) As Variant
Dim newArray() As Variant
Dim bigArray As Variant
Dim smallArray As Variant
If (UBound(Array1) => UBound(Array2)) Then
bigArray = array1
smallArray = array2
Else
bigArray = array2
smallarray = array1
End If
Dim i As Integer
i=0
ForAll v In bigArray
If ArrayGetIndex(smallArray, v, 0) >= 0 Then
ReDim Preserve newArray(i)
newArray(i) = v
i = i + 1
End If
End ForAll
commonElements = newArray
End Function