2つのハッシュのキーを比較して、存在しないものを抽出
2つのハッシュのキーを比較して、存在しないものを抽出する関数を作成しました。
具体例としては、以下のHash1とHash2というハッシュに対してHash1に存在しないものを抽出する場合、緑の部分を抽出します。
Hash1 | Hash2 | ||
キー | 値 | キー | 値 |
one | 1 | zero | 0 |
two | 2 | one | 1 |
three | 3 | two | 2 |
four | 4 | three | 3 |
結果 | |
キー | 値 |
zero | 0 |
以下はこの関数を含むスクリプトです。
set-PSDebug -strict; Function GetDeltaHash{ param([system.Collections.Hashtable]$h1, [system.Collections.Hashtable]$h2); $r = @{}; foreach ( $key in $h2.keys){ if (!$h1.ContainsKey($key)){ $r[$key] = $h2[$key]; } } $r } $Hash1 = @{one = 1; two = 2; three = 3; four = 4}; $Hash2 = @{zero = 0; one = 1; two = 2; three = 3}; write-Host ""; write-Host ""; write-Host " Hash2に含まれて、Hash1に含まれていないもの"; GetDeltaHash $Hash1 $Hash2; write-Host ""; write-Host ""; write-Host " Hash1に含まれて、Hash2に含まれていないもの"; GetDeltaHash $Hash2 $Hash1;