2012-11-22 50 views
0

如何从vbscript中的数组中删除重复项?删除数组中的重复项

代码:

 dim XObj(100),xObjXml 
     for s=0 to xObjXml.length-1  
     XObj(s)=xObjXml(s).getAttribute("xsx") 
     next 

请提出这个更好的答案。

回答

3

使用Dictionary收集数组的唯一项目:

>> a = Array(1, 2, 3, 1, 2, 3) 
>> WScript.Echo Join(a) 
>> Set d = CreateObject("Scripting.Dictionary") 
>> For i = 0 To UBound(a) 
>>  d(a(i)) = d(a(i)) + 1 
>> Next 
>> WScript.Echo Join(d.Keys()) 
>> 
1 2 3 1 2 3 
1 2 3 
>> 

(BTW:对于VBScript数组没有。长度属性)

补充:

的。字典的Keys()方法返回(唯一)键的数组:

>> b = d.Keys() 
>> WScript.Echo Join(b), "or:", b(2), b(1), b(0) 
>> 
1 2 3 or: 3 2 1 

新增II:(aircode!)

试图让物体的独特属性的XML集合中:(对不起!)

Dim xObjXml : Set xObjXml = ... get some collection of XML objects ... 
Dim dicAttrs : Set dicAttrs = CreateObject("Scripting.Dictionary") 
Dim i 
For i = 0 To xObjXml.length - 1     
    Dim a : a = xObjXml(i).getAttribute("xsx") 
    dicAttrs(a) = dicAttrs(a) + 1 
Next 
Dim aAttrs : aAttrs = dicAttrs.Keys() 

新增III:

.Keys()是一种方法,所以应该这样称呼它:

Dim aAttrs : aAttrs = dicAttrs.Keys() 

已添加IV:

对于正在使用的样品,请参阅here

+0

:谢谢你的回答。哪里有新的数组?在哪里存储?请检查我在后期完成的更改。 – user1495475

+0

这不适用于我,请问你可以使用我已经使用的数组变量ñ给我一个例子吗? – user1495475

+0

它表示“aAttrs = dicAttrs.Keys”的无效属性分配。这里有什么语法错误吗? – user1495475