我试图弄清楚如何从VBScript中的ArrayList
中删除重复项,但似乎没有相关信息。由于(显然)没有专门的功能,也许我可以得到一些建议,如何做到这一点?
我发现的唯一类似问题与Java有关,而不是VBScript。
答案 0 :(得分:1)
我说最简单的方法是将值放入Dictionary
:
Set d = CreateObject("Scripting.Dictionary")
For Each e In arrayList
d(e) = e
Next
arr = d.Items 'put unique elements back into
如果您的数组列表包含对象,并且您不希望将对象引用作为唯一性指示符,则需要标识某种属性(或属性组合),这些属性定义对象的唯一性并将其用作在字典中键入。您还需要使用Set
关键字来分配对象。
For Each e In arrayList
Set d(e.uniqueProperty) = e
Next
如果您希望在原始变量中返回唯一列表,则需要另一个循环将元素从字典传输回数组列表:
arrayList.Clear
For Each e In d.Items
arrayList.Add e
Next
答案 1 :(得分:0)
vba 中的 Arraylist 对象有一个 .contains
方法。所以,要获得一个没有重复的数组列表,你所要做的就是这样。
Set newArraylist = CreateObject("Scripting.Dictionary")
For Each item In originalArrayList
if newArraylist .contains(item) = false then newArraylist .add(item)
Next