HOME > PowerShell構文 > 配列
配列
PowerShellの配列の使い方です。
解説
PowerShellでは他の言語と同じように配列を使うことができます。
配列は要素を動的に変更できないため、要素の追加や削除を行いたい場合はListの使用をおすすめします。
構文
- (構文:1次元配列)
- $array = @(要素1, 要素2, 要素3, ...)
- (構文:2次元配列)
- $array = @( @(要素1, 要素2, 要素3, ...), @(要素1, 要素2, 要素3, ...), @(要素1, 要素2, 要素3, ...) )
配列のメソッド
PowerShellの配列で使用できるメソッドには以下のようなものがあります。
メソッド | 説明 |
---|---|
.Add() | 配列に新しい要素を追加する (例)$arr.Add("要素") |
.Clear() | 配列の要素を全て削除する (例)$arr.Clear() |
.Contains() | 指定した要素が配列に含まれるか判定する (例)$arr.Contains("検索する要素") |
.CopyTo() | 配列の要素を別の配列にコピーする (例)$arr1.CopyTo($arr2, 0) |
.IndexOf() | 指定した要素の最初のインデックスを返す (例)$arr.IndexOf("要素") |
.Insert() | 指定したインデックスに新しい要素を挿入する (例)$arr.Insert(3, "新要素") |
.Remove() | 指定した要素を配列から削除する (例)$arr.Remove("要素") |
.RemoveAt() | 指定したインデックスの要素を削除する (例)$arr.RemoveAt(2) |
.Reverse() | 配列の要素を逆順にする (例)$arr.Reverse() |
.Sort() | 配列の要素をソートする (例)$arr.Sort() |
サンプル(配列を生成)
1次元配列を生成する
$array = @(1, 2, 3, 4, 5)
省略形として「$array = 1, 2, 3, 4, 5」でもOKです。
2次元配列を生成する
$array2D = @(
@(1, 2, 3),
@(4, 5, 6),
@(7, 8, 9)
)
空の配列を生成する
$emptyArray = @()
サンプル(配列から要素を取得)
配列から要素を取得する
$array = @(1, 2, 3, 4, 5)
# 1番目の要素を取得する
$firstElement = $array[0] # 1
# 末尾の要素を取得する
$lastElement = $array[-1] # 5
インデックス番号は0から始まる連番です。
配列から反復処理で要素を取得する
foreach ($item in $array) {
Write-Host $item
}
ソートして要素を取得する
$sortedArray = $array | Sort-Object
条件を指定して要素を取得する
# 偶数の要素のみを取得する
$evenNumbers = $array | Where-Object { $_ % 2 -eq 0 }
2次元配列から要素を取得する
$array2D = @(
@(1, 2, 3),
@(4, 5, 6),
@(7, 8, 9)
)
# 2行目、3列目の要素を取得
$element = $array2D[1][2]
Write-Host "2行目、3列目の要素: $element" # 出力: 6
サンプル(配列の要素を更新する)
配列を更新する
$array = @(1, 2, 3, 4, 5)
$array[2] = 10 # 3番目の要素を10に更新
→ 1, 2, 10, 4, 5
$array = @(1, 2, 3, 4, 5)
$array = $array | ForEach-Object { $_ * 2 } # 各要素を2倍にする
→ 2, 4, 6, 8, 10
要素をnullに更新する
$array[2] = $null # 3番目の要素をnullに更新する
要素自体は無くなりません。(3番目の要素はnullとして存在し続けます)
サンプル(配列の要素を追加する)
配列の末尾に要素を追加する
$array = @(1, 2, 3)
$array += 4 # 末尾に4を追加
サンプル(配列の要素を削除する)
先頭の要素を削除する
$array = $array[1..($array.Length-1)]
先頭の末尾を削除する
$array = $array[0..($array.Length-2)]
備考
- 要素のインデックスは0から始まる連番です。(1番目の要素のインデックスは0です。)
- 配列は固定長なので、要素の削除や追加など要素数が変わる変更を行いたい時は、リストを使うことをお勧めします。
(上記の削除や追加の例は、新たに配列を作り直して疑似的に実現させているのでパフォーマンスは悪いです)
関連項目
- PowerShell構文
- リスト(List):リストについてです