It seems that there are no issues using Scripting.Dictionary
#include <Array.au3>
Local $a[11] = [1, 1, 3, 5, 6, 7, 8, 9, 10, 11, 12]
Local $b[12] = [1, 2, 2, 3, 4, 5, 6, 8, 10, 12, 13, 14]
Local $sda = ObjCreate("Scripting.Dictionary")
Local $sdb = ObjCreate("Scripting.Dictionary")
Local $sdc = ObjCreate("Scripting.Dictionary")
For $i In $a
$sda.Item($i)
Next
For $i In $b
$sdb.Item($i)
Next
For $i In $a
If $sdb.Exists($i) Then $sdc.Item($i)
Next
$asd3 = $sdc.Keys()
For $i In $asd3
If $sda.Exists($i) Then $sda.Remove($i)
If $sdb.Exists($i) Then $sdb.Remove($i)
Next
$asd1 = $sda.Keys()
$asd2 = $sdb.Keys()
_ArrayDisplay($asd1, "$asd1")
_ArrayDisplay($asd2, "$asd2")
_ArrayDisplay($asd3, "$asd3")