連想配列

連想配列を使うことで、キーと値のセットで情報を格納できます

連想配列

連想配列は、キーと値のセットで情報を格納できます。
連想配列は、格納順序が保証されません。

連想配列のつくり方

# 通常例
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


スポンサーリンク