VBS(VBScript)の配列のサンプルです。
目次
仕組み | 配列とは |
静的配列を作成 / 動的配列を作成 / Array関数で作成 | |
ForEach文、For文で要素を取得 / 要素を検索 / 要素数を取得 | |
配列の値を変更する | |
配列をコピー | |
ループで2次元配列を作成する |
配列とは
a = Array( 値1 , 値2 , 値3 ) |
上記は複数の値を変数aに代入しています。
この変数aは配列として複数の値を持ちます。
- 1つの変数で複数の値を保持できます。
- 各項目を要素(element)といいます。
- 要素の順序をインデックス(添字)で管理します。上記図では(0)、(1)、(2)、(3)がインデックスです。
- インデックスの先頭は0から始まります。
静的配列を作成
要素数を宣言して配列を作成します。
Dim arr(2)
arr(0) = 1
arr(1) = 2
arr(2) = 3
'arr(3) = 4 インデックスが有効範囲にありません
WScript.Echo(arr(0))'1
WScript.Echo(arr(1))'2
WScript.Echo(arr(2))'3
1行目は、変数の後のかっこで2を指定しています。
その場合の要素は、3~5行目のようにインデックスは0から2までの3つ入ります。
要素の数が2つではないので注意が必要です。
Javaの場合は、3と宣言したら要素の数は3つです。
動的配列を作成
要素数を後から変更します。要素数が変わるので動的配列と呼ばれます。
Dim arr()
ReDim arr(2)
arr(0) = "赤"
arr(1) = "黄"
arr(2) = "青"
ReDim Preserve arr(3)
arr(3) = "オレンジ"
For Each b In arr
WScript.Echo (b) '赤 黄 青 オレンジ
Next
1行目は、配列の変数を宣言しています。要素数は指定しません。
3行目は、Redimで数値を2にしています。
5~7行目は、値をセットしています。
9行目は、Redim Preserveで数値を3に変更しています。
Preserveは保持するという意味です。Preserveがないと5~7行目の値がクリアされてしまいます。
Array関数で作成
Array関数で配列を作成します。
Dim arr
arr = Array(1, 2, 3)
WScript.Echo arr(0) '1
WScript.Echo arr(1) '2
WScript.Echo arr(2) '3
2行目は、Arrayで配列に値をまとめてセットしています。
ForEach文、For文で要素を取得
Dim arr
arr = Array(1, 2, 3)
For Each b In arr
WScript.Echo b '1 2 3
Next
For i = 0 To UBound(arr)
WScript.Echo arr(i) '1 2 3
Next
WScript.Echo UBound(arr) '2
WScript.Echo LBound(arr) '0
4行目は、For Each文で配列の値の数分処理を繰り返します。
8行目は、For文で配列の値の数分処理を繰り返します。
UBoundは引数の配列の最大のインデックス値を返します。2が返ります。
Lboundは引数の配列の最小のインデックス値を返します。0が返ります。
要素を検索
要素を検索するサンプルです。
Dim arr
Dim b1
arr = Array("赤", "黄", "青")
b1 = False
For Each c1 In arr
If c1 = "黄" Then
b1 = True
Exit For
End If
Next
WScript.Echo(b1) '-1 (True)が表示される
For Eachでループさせて配列の要素を一つずつ確認していきます。
Trueは-1で、Falseは0です。
要素数を取得
Uboundを使用して要素数を取得します。
Dim arr
arr = Array("赤", "黄", "青")
WScript.Echo(UBound(arr)+1) '3が表示される
配列の要素数は、UBoundに1を追加します。
配列の値を変更する
Dim arr
arr = Array("赤", "黄", "青")
arr(1) = "オレンジ"
WScript.Echo arr(0) '赤
WScript.Echo arr(1) 'オレンジ
WScript.Echo arr(2) '青
変更は、要素のインデックス(添字)を指定して値を代入します。
配列をコピー
配列をコピーするサンプルです。
Dim arr1,arr2
arr1 = Array("赤", "黄", "青")
arr2 = arr1 '配列をコピー
arr2(0) = "オレンジ"
WScript.Echo(arr2(0)) 'オレンジ
WScript.Echo(arr2(1)) '黄
WScript.Echo(arr2(2)) '青
WScript.Echo(arr1(0)) '赤
WScript.Echo(arr1(1)) '黄
WScript.Echo(arr1(2)) '青
コピー先の配列の値を変更してもコピー元の配列の値は変更されません。
ループで2次元配列を作成する
for文のループで2次元配列を作成するサンプルです。
Dim arr(2,2)
num = 1
For i = 0 To 1
For j = 0 To 2
arr(i, j) = num
num = num + 1
Next
Next
WScript.Echo(arr(0,0)) '1
WScript.Echo(arr(0,1)) '2
WScript.Echo(arr(0,2)) '3
WScript.Echo(arr(1,0)) '4
WScript.Echo(arr(1,1)) '5
WScript.Echo(arr(1,2)) '6
関連の記事