連想配列
連想配列を使うことで、キーと値のセットで情報を格納できます
連想配列
連想配列は、キーと値のセットで情報を格納できます。
連想配列は、格納順序が保証されません。
連想配列のつくり方
# 通常例
PS> $hash = @{
>> Key1 = "Value1"
>> Key2 = 1,2
>> }
PS> $hash
Name Value
---- -----
Key2 {1, 2}
Key1 Value1
# 一行で作成する例。セミコロンで区分けする
PS> $hash = @{Key1 = "Value1"; Key2 = 1,2}
PS> $hash
Name Value
---- -----
Key2 {1, 2}
Key1 Value1
連想配列の要素のアクセス方法
# プロパティベースのアクセス方法 $hash.Key
PS> $hash.Key1
Value1
PS> $hash.Key2
1
2
# indexを利用したアクセス方法 $hash["Key"]
PS> $hash["Key1"]
Value1
PS> $hash["Key2"]
1
2
連想配列の要素の追加
キーと値の追加方法。
# プロパティベースの追加方法 $hash.Key = Value
PS> $hash.Key3 = "NewValue3"
PS> $hash
Name Value
---- -----
Key1 Value1
Key2 {1, 2}
Key3 NewValue3
# indexを利用した追加方法 $hash["Key"] = Value
PS> $hash["Key4"] = "NewValue4"
PS> $hash
Name Value
---- -----
Key3 NewValue3
Key2 {1, 2}
Key1 Value1
Key4 NewValue4
連想配列の要素の削除
Removeメソッドを使用して、連想配列の要素を削除します。
PS> $hash.Remove("Key3")
PS> $hash
Name Value
---- -----
Key2 {1, 2}
Key1 Value1
Key4 NewValue4
連想配列のクリア
Clearメソッドを使用して、連想配列をクリアします。
PS> $hash.Clear()
PS> $hash
PS>
順序を保証する連想配列
キー格納順序を保証したい場合は、[ordered]をつけます。
格納順序が保証されるので、$table[数値]のようにインデックス値でアクセスできます。
PowerShell V3以降。
PS> $ordered = [ordered]@{first=1;second=2}
PS> $ordered.first
1
PS> $ordered[0]
1
ユーザー定義オブジェクト
ユーザー定義オブジェクトを作る場合は、[pscustomobject]をつけます。
他のオブジェクトの様にソートや選択できるようになります。
PowerShell V3以降。
PS> $object = [PSCustomObject]@{Shell="PowerShell";Computer="Windows"}
PS> $object
Shell Computer
----- --------
PowerShell Windows
# 作成したユーザー定義オブジェクト活用例(CSVファイル出力)
PS> $object | Export-CSV -Path ./object.csv
キーまたは値でソートする方法
本来、連想配列はキーを使って、値を参照するためにあります。
それでも、ソートしたい場合にはGetEnumerator()メソッドを使います。
PS> $hash = @{key1 = 1; key2 = 2; key10 = 10; key3 = 3; key13 = 13}
PS> $hash
Name Value
---- -----
key13 13
key1 1
key2 2
key3 3
key10 10
PS> $hash.GetEnumerator() | sort value
Name Value
---- -----
key1 1
key2 2
key3 3
key10 10
key13 13
連想配列とforeach文
連想配列を繰り返し文で扱う場合は、$hash.Keysを活用します。
PS> $hash = @{key1 = 1; key2 = 2; key10 = 10; key3 = 3; key13 = 13}
PS> foreach ($key in $hash.Keys) {
>> "$($key):$($hash.$key)"
>> }
>>
key13:13
key1:1
key2:2
key3:3
key10:10
YouTube
動画による説明はこちら。
参考リンク
Everything you wanted to know about hashtables | Microsoft Docs
About Hash Tables | Microsoft Docs
スポンサーリンク