两个阵列中的LotusScript Common元素

时间:2016-03-19 17:47:23

标签: arrays lotus-notes lotusscript

我有两个未排序且可能长度不同的数组,我想创建一个只包含公共元素的新数组。我需要一个像这样的功能 LotusScript中的newArray = commonElements(Array1,Array2)。

查看是否有代码示例但找不到代码示例。已经有点能够创建这个,但循环比我认为应该是必要的更多。

你可以指点我一个解决方案吗?

3 个答案:

答案 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