转Qokelate的
#include-once
;参数: 基础数组,要对比的数组
;返回: 不同的元素(数组),$a[0]=元素个数
;家庭版大内存占用,处理速度快
;企业版小内存占用,处理相比稍慢
;家庭版————中小型数组对比(区分元素数据大小写)
Func ArrayFindDifEleA(ByRef $aA, ByRef $aB)
Local $aRetn[1] = [0]
If Not IsArray($aA) Or Not IsArray($aB) Then Return $aRetn
For $a In $aA
Assign('_' & String(StringToBinary($a)), 0, 1)
Next
Local $Num = 0
For $b In $aB
If Not IsDeclared('_' & String(StringToBinary($b))) Then
$Num += 1
ReDim $aRetn[$Num + 1]
$aRetn[$Num] = $b
EndIf
Next
$aRetn[0] = $Num
Return $aRetn
EndFunc ;==>ArrayFindDifEleA
;家庭版————中小型数组对比(不区分元素数据大小写)
Func ArrayFindDifEleB(ByRef $aA, ByRef $aB)
Local $aRetn[1] = [0]
If Not IsArray($aA) Or Not IsArray($aB) Then Return $aRetn
For $a In $aA
Assign('_' & String(StringToBinary(StringUpper($a))), 0, 1)
Next
Local $Num = 0
For $b In $aB
If Not IsDeclared('_' & String(StringToBinary(StringUpper($b)))) Then
$Num += 1
ReDim $aRetn[$Num + 1]
$aRetn[$Num] = $b
EndIf
Next
$aRetn[0] = $Num
Return $aRetn
EndFunc ;==>ArrayFindDifEleB
#include <Hash\md5.au3>
;企业版————巨型数组对比(区分元素数据大小写)
Func ArrayFindDifEleC(ByRef $aA, ByRef $aB)
Local $aRetn[1] = [0]
If Not IsArray($aA) Or Not IsArray($aB) Then Return $aRetn
For $a In $aA
Assign('_' & _MD5($a), 0, 1)
Next
Local $Num = 0
For $b In $aB
If Not IsDeclared('_' & _MD5($b)) Then
$Num += 1
ReDim $aRetn[$Num + 1]
$aRetn[$Num] = $b
EndIf
Next
$aRetn[0] = $Num
Return $aRetn
EndFunc ;==>ArrayFindDifEleC
;企业版————巨型数组对比(不区分元素数据大小写)
Func ArrayFindDifEleD(ByRef $aA, ByRef $aB)
Local $aRetn[1] = [0]
If Not IsArray($aA) Or Not IsArray($aB) Then Return $aRetn
For $a In $aA
Assign('_' & _MD5(StringUpper($a)), 0, 1)
Next
Local $Num = 0
For $b In $aB
If Not IsDeclared('_' & _MD5(StringUpper($b))) Then
$Num += 1
ReDim $aRetn[$Num + 1]
$aRetn[$Num] = $b
EndIf
Next
$aRetn[0] = $Num
Return $aRetn
EndFunc ;==>ArrayFindDifEleD
#include <Array.au3>
Local $aA[5] = [1, 2, 3, 4, 5]
Local $aB[10] = [1, 2, 4, 6, 10, 'ss', 33, 55, 8, 'a']
Local $aC = ArrayFindDifEleD($aA, $aB)
_ArrayDisplay($aC)
|