0

vbscriptで配列から重複を削除するにはどうすればよいですか?

コード:

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

これに対するより良い答えを提案してください。

4

2 に答える 2

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
>>

(ところで: VBScript 配列の .length プロパティはありません)

追加した:

辞書の .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:

実際のサンプルについては、こちらを参照してください。

于 2012-11-22T12:42:17.073 に答える