求ASP vb版数组去重函数
发布网友
发布时间:2022-05-29 16:01
我来回答
共1个回答
热心网友
时间:2023-10-23 22:49
Function array_unique(ByRef srcArray)
If Ubound(srcArray) <= 0 Then '小于2个不用去重
array_unique = srcArray
Exit Function
End If
'这里用字典,带key=>value映射,比较方便
Dim dict1: Set dict1 = Server.CreateObject("Scripting.Dictionary")
Dim dictWillDel: Set dictWillDel = Server.CreateObject("Scripting.Dictionary")
Dim i
For i = 0 To Ubound(srcArray) '循环要去重的数组
If dict1.Exists(srcArray(i)) Then 'dict1里面已经有这个值了,说明这个值有重
dictWillDel.Add i '把要去掉的元素的下标记录到dictWillDel里
Else '至目前为止没有重复
dict1.Add srcArray(i) '那就记下来,再碰到这个值就说明有重复了
End If
Next
Dim newArray: Redim newArray(0) '建立一个新数组,把srcArray里面不需要去掉的值存进来,因为要在srcArray里面去掉一个元素不太方便
Dim n: n = 0
For i = 0 To Ubound(srcArray)
If Not dictWillDel.Exists(i) Then '这个下标在dictWillDel里没有,说明不用删除这项
'那就存下来
Redim Preserve newArray(n)
newArray(n) = srcArray(i)
n = n + 1
End If
Next
array_unique = newArray
srcArray = newArray
End Function
求ASP vb版数组去重函数
Dim i For i = 0 To Ubound(srcArray) '循环要去重的数组 If dict1.Exists(srcArray(i)) Then 'dict1里面已经有这个值了,说明这个值有重 dictWillDel.Add i '把要去掉的元素的下标记录到dictWillDel里 Else '至目前为止没有重复 dict1.Add srcArray(i) '那就记下来,再碰到这个值就说明...