LoginSignup
1
1

配列にディクショナリを設定できた(VBScript)

Last updated at Posted at 2024-03-09

複数のディクショナリが欲しいときに便利なので検証内容を残す

配列にディクショナリを生成する

dicsArray.vbs
Dim dicsArray(2)

set dicsArray(0) = CreateObject("Scripting.Dictionary")
set dicsArray(1) = CreateObject("Scripting.Dictionary")
set dicsArray(2) = CreateObject("Scripting.Dictionary")

dicArrays(0).add "dog","ポチ"
dicArrays(1).add "cat","レオ"
dicArrays(3).add "rabbit","キナコ"

これを応用すると関数で複数のディクショナリを返すことができる

dicsArrayFunc.vbs
Public Function getDictionaries(num, infoArray)
    Dim dicArrays()
    Dim cnt, i

    '指定数の配列要素を生成する
    ReDim dicArrays(num)

    '指定数のディクショナリを生成する
    for cnt = 0 to num
        set dicArrays(cnt) = CreateObject("Scripting.Dictionary")
    Next

    'ディクショナリにキーを追加する
    For i = 0 to ubound(infoArray)
        For cnt = 0 to num
            dicArrays(cnt).add infoArray(i,0),infoArray(i,1)
        Next
    Next

    '配列なのでSetは付けない
    getDictionaries = dicArrays

End Function

Dim dicArrays
Dim dic1,dic2,dic3,dic4
Dim cnt
Dim infoArray(2,1)

'ディクショナリに展開する情報を生成する
infoArray(0,0) = "dog"
infoArray(0,1) = "ポチ"
infoArray(1,0) = "cat"
infoArray(1,1) = "レオ"
infoArray(2,0) = "rabbit"
infoArray(2,1) = "キナコ"

dicArrays = getDictionaries(3,infoArray)

'実際に使うときは普通のオブジェクト変数の方が使いやすいかも
Set dic1 = dicArrays(0)
Set dic2 = dicArrays(1)
Set dic3 = dicArrays(2)
Set dic4 = dicArrays(3)

'検証用
For cnt = 0 to 3
    msgbox Join(dicArrays(cnt).keys,vbCrLf) & vbCrLf &Join(dicArrays(cnt).items,vbCrLf)
Next

VBSだと処理に時間がかかるので何度も同じ関数を呼び出すより時短になると思う

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1