Scripting.Dictionary是個很有用的組件,其創建了類似於Key索引對應Value值的字典對象,並且在其內部提供了快速索引訪問的機制,可以讓我們通過Key直接索引到指定的Value,比遍歷二維數組有效得多。
其在VBScript中是這樣訪問的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
Dim objDict
Set objDict = WSH.CreateObject("Scripting.Dictionary") ' .Add(key, value) objDict.Add "a", "value1" objDict.Add "b", "value2" objDict.Add "c", "value3" '直接通過key=b索引到value2 WSH.Echo objDict.Item("b") objDict.Remove "b" ' 刪除索引b及其對應的值 ' 以下是遍歷字典 Dim objKeys, objItems, i objKeys = objDict.Keys objItems = objDict.Items For i = 0 To objDict.Count -1 WSH.Echo "Key=" & objKeys(i) &_ " AND Value=" & objItems(i) Next ' 判斷指定的key是否存在 If objDict.Exists("b") Then WSH.Echo "Found it" Else WSH.Echo "Not Exists!" End If objDict.RemoveAll ' 清空字典內所有的key及其對應value Set objDict = Nothing |
當然在JScript訪問的方式一樣,但是在遍歷這里需要一點點變動。
由於Scripting.Dictionary的Keys和Items的集合返回的是VB安全數組,也就是說JScript訪問需要多個轉換的步驟,方法就是采用new VBArray()對象,相關信息可以參考MSDN的《VBArray Objects》,當獲得VBArray對象后就可以通過getItem方法獲取數組元素了,值得注意的是這個VBArray對象自己不創建數組,其只起到一個轉換的作用,也可以將其看成是一個操作接口吧。當然其toArray()方法可以將其轉換為真正的JScript數組,屆時可以直接像操作JScript數組一樣操作VBArray轉換的對象了。
原文:http://wangye.org/blog/archives/60/