配列のインデックス

PowerShell

配列の要素にアクセスするにはそのインデックスを指定する。

正のインデックス

PS C:\> $arr = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'
PS C:\> $arr[0]
a
PS C:\> $arr[4]
e
PS C:\> $arr[9]
j
PS C:\> $arr[10]
PS C:\>

この例の場合、配列の構造は次のようになっている。

インデックス0123456789
abcdefghij
配列 $arr の構造

上記の例では「10」のインデックスに対応する値は存在しない。

PS C:\> $arr = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'
PS C:\> $null -eq $arr[10]
True
PS C:\> 

負のインデックス

負のインデックスは配列の後方からの数えた位置を示す。

PS C:\> $arr = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'
PS C:\> $arr[-1]
j
PS C:\> $arr[-4]
g
PS C:\> $arr[-10]
a
PS C:\> $arr[-11]
PS C:\>

この例の場合、配列の構造は次のようになっている。

インデックス-10-9-8-7-6-5-4-3-2-1
abcdefghij
配列 $arr の構造

正と負のインデックスの混在

正のインデックスと負のインデックスは混在して利用できる。

PS C:\> $arr = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'
PS C:\> $arr[0]
a
PS C:\> $arr[-1]
j
PS C:\> $arr[2]
c
PS C:\> $arr[-3]
h
PS C:\> $arr[4]
e
PS C:\> $arr[-5]
f
PS C:\>

正のインデックスと負のインデックスを同時に記載すると、この例の場合の配列の構造は次のようになる。

正のインデックス0123456789
負のインデックス-10-9-8-7-6-5-4-3-2-1
abcdefghij
配列 $arr の構造

配列のインデックスのまとめ

配列の要素数を n としたとき、有効にその要素にアクセスするにはインデックスに -n から n-1 までの範囲の数値を指定する必要があり、それ以外の数値を指定した場合、返される値は $null となる。

PS C:\> $arr = 'a', 'b', 'c', 'd', 'e'
PS C:\> $n = $arr.count
PS C:\> $n
5
PS C:\> (-$n - 2)..($n + 1) | ForEach-Object { '$arr[{0}]: {1}' -f $_, $arr[$_] }
$arr[-7]:
$arr[-6]:
$arr[-5]: a
$arr[-4]: b
$arr[-3]: c
$arr[-2]: d
$arr[-1]: e
$arr[0]: a
$arr[1]: b
$arr[2]: c
$arr[3]: d
$arr[4]: e
$arr[5]:
$arr[6]:
PS C:\>

上記の例の場合、配列の要素をインデックスを基準とした表に表すと次のようになる。

インデックス~ -6-5-4-3-2-1012345 ~
$nullabcdeabcde$null
インデックスを基準にした時の配列 $arr の要素

理解の補助として表を記載したが、この例の場合の配列の要素数は、あくまで 5 であることに注意すること。

コメント

タイトルとURLをコピーしました