分かりやすく、使いやすく。

配列内の重複した値を削除する方法

スポンサーリンク

PowerShell で配列内の重複した値を削除するには Sort-Object と Get-Unique を組み合わせて使用します。 Get-Unique だけを使用すると、インデックスが連続していない要素に重複した値が入っている場合は重複した値が残ってしまう為、事前に Sort-Order で重複した値を全て隣同士にしておく必要があります。サンプルコードは次の通りです。

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 配列を初期化
$ary_nums = @(3,3,3,1,1,2,2,1,3)
 
Write-Host '重複を削除する前の配列の内容'
 
for ($i = 0; $i -lt $ary_nums.Length; $i++) {
    Write-Host ('インデックス:' + [string]$i + '、値:' + [string]$ary_nums[$i])
}
 
# 重複データを削除する
$ary_nums = $ary_nums | Sort-Object | Get-Unique
 
Write-Host '重複を削除した後の配列の内容'
 
for ($i = 0; $i -lt $ary_nums.Length; $i++) {
    Write-Host ('インデックス:' + [string]$i + '、値:' + [string]$ary_nums[$i])
} 

上記の実行結果は次の通りです。

重複を削除する前の配列の内容
インデックス:0、値:3
インデックス:1、値:3
インデックス:2、値:3
インデックス:3、値:1
インデックス:4、値:1
インデックス:5、値:2
インデックス:6、値:2
インデックス:7、値:1
インデックス:8、値:3
重複を削除した後の配列の内容
インデックス:0、値:1
インデックス:1、値:2
インデックス:2、値:3 
スポンサーリンク
スポンサーリンク