PowerShell: 配列の先頭・末尾要素を削除する

PowerShellで配列の先頭や末尾の要素を削除する方法を説明します。 PowerShellでは要素を削除するpop等のメソッドや関数は用意されていません。 ですが配列のスライス(切り出し・範囲取得)機能を使えば実現できます。 (参考記事:配列のスライス

まずは配列の末尾の要素を削除する方法、 次に先頭の要素を削除する方法を解説します。

配列の末尾の要素を削除する

末尾の要素を削除するには、 スライス機能を使って「先頭」から「末尾の1つ前」 までのインデックスを指定します。 そうすることで末尾を削除するのと同じ効果を得られます。

次のコードは要素数が5の配列を用意し、 末尾の要素を削除しています。 「$arr[0..$n]」の部分で「先頭」から 「末尾の1つ前」までをスライスしています。

$arr = "a" , "b" , "c", "d", "e"

$n = $arr.Length - 2

# 末尾要素を削除
$arr = $arr[0..$n]

Write-Host $arr # a b c d

変数$nを使用せずに直接次のように指定しても結果は同じです。

# 末尾要素を削除
$arr = $arr[0..($arr.Length - 2)]

配列の先頭の要素を削除する

先頭の要素を削除する場合も同じくスライス機能を使います。 今度は「2番目」から「末尾」までのインデックスを指定します。 そうすることで先頭を削除するのと同じ効果が得られます。

次のコードでは配列の先頭要素"a"を削除しています。 「$arr[1..($arr.Length-1)]」の部分で2番目の要素から 末尾までを取得しています。

$arr = "a" , "b" , "c", "d", "e"

$arr = $arr[1..($arr.Length-1)]

Write-Host $arr  # b c d e

(まとめ記事: PowerShell 配列

PowerShell