ja-JP/about_Arrays.help.txt
|
TOPIC about_Arrays 簡単な説明 複数の項目をまとめて格納するためのデータ構造である配列について 説明します。 詳細な説明 配列は、同じ型または異なる型の項目をまとめて格納するデータ構造です。 Windows PowerShell 3.0 以降では、0 個または 1 個のオブジェクトの コレクションも配列のプロパティを持ちます。 配列の作成と初期化 変数にカンマ区切りの複数の値を代入します。 $A = 22,5,10,8,12,9,80 先頭にカンマを付けると、要素が 1 個の配列を作成できます。 $B = ,7 範囲演算子 (..) を使用します。 $C = 5..8 既定では、PowerShell はオブジェクト配列 (System.Object[]) を 作成します。キャストすると、厳密に型指定された配列を作成できます。 [int32[]]$ia = 1500, 2230, 3350, 4000 [Diagnostics.Process[]]$zz = Get-Process 配列部分式演算子 @( ... ) を使用すると、0 個または 1 個の オブジェクトであっても、確実に配列として扱えます。 $a = @("Hello World") $b = @() 配列要素へのアクセスと使用 配列の要素は 0 から始まるインデックスで参照します。 $a[0] # 最初の要素 $a[2] # 3 番目の要素 $a[1..4] # 要素の範囲 負のインデックスは末尾から数えます。 $a[-1] # 最後の要素 $a[-3..-1] # 末尾の 3 要素 プラス演算子を使うと、範囲と個別の要素を組み合わせられます。 $a[0,2+4..6] # 位置 0、2、4 から 6 の要素 要素の反復処理 foreach ループを使用します。 foreach ($element in $a) { $element } カウンターを使う for ループを使用します。 for ($i = 0; $i -le ($a.Length - 1); $i += 2) { $a[$i] } while ループを使用します。 $i = 0 while ($i -lt 4) { $a[$i] $i++ } 配列のプロパティ Count 項目数を取得する最もよく使われるプロパティです ([int32] 型)。 Length Count と同じ値を保持します ([int32] 型)。ただし文字列の 場合、Length は文字数で、Count は常に 1 になります。 LongLength 要素数が 2,147,483,647 を超える配列で使用します ([int64] 型)。 Rank 次元数を返します。PowerShell の配列はほとんどが 1 次元です。ジャグ配列 (配列を含む配列) の Rank は 1 で、 個別の角かっこ $a[2][1] でアクセスします。 真の多次元配列は、単一の角かっこ内にカンマ区切りの インデックスを指定します。 [string[,]]$rank2 = [string[,]]::new(3,2) $rank2[0,0] = 'a' $rank2[1,1] = 'd' 配列のメソッド Clear() すべての要素の値を、配列の要素型の既定値に設定します。 配列のサイズはリセットされません。 $a = 1, 2, 3 $a.Clear() # null に設定 [int[]] $intA = 1, 2, 3 $intA.Clear() # 0 に設定 ForEach() すべての要素を反復処理し、処理を実行します。複数のオーバー ロードがあります。 # スクリプトブロックを各要素に対して実行 $a = @(0 .. 3) $a.ForEach({ $_ * $_ }) # 要素を別の型にキャスト ("1/1/2017", "2/1/2017").ForEach([datetime]) # プロパティの値を取得 (dir 'C:\Temp').ForEach('LastAccessTime') # 各項目のメソッドを実行 ("one", "two", "three").ForEach("ToUpper") Where() 配列の要素をフィルター処理または選択します。スクリプト ブロックが 0 以外、空でない、$false 以外、$null 以外に評価 される要素がフィルターを通過します。 (0..9).Where{ $_ % 2 } # 奇数 ('hi', '', 'there').Where{ $_ } # 空でない文字列 選択モードには Default、First、Last、SkipUntil、Until、Split が あります。 $running, $stopped = (Get-Service).Where({$_.Status -eq 'Running'}, 'Split') 配列のメンバーの取得 Get-Member で配列のプロパティとメソッドを取得します。配列を そのまま渡すには先頭にカンマを付けます。 Get-Member -InputObject $a ,$a | Get-Member 配列の操作 要素を変更します。 $a[1] = 10 $a.SetValue(500, 1) 要素を追加します。 $a = @(0..4) $a += 5 注意: += は新しい配列を作成するため、繰り返し実行したり大きな 配列で使用したりするとパフォーマンスが低下することがあります。 配列を結合します。 $x = 1,3 $y = 5,9 $z = $x + $y # 結果は 1, 3, 5, 9 配列を削除します。 $a = $null 0 個または 1 個の配列 Windows PowerShell 3.0 以降では、スカラー型および 0 個または 1 個のオブジェクトのコレクションも Count と Length プロパティを 持ちます。配列のインデックス表記は単一オブジェクトでも機能します。 $a = $null $a.Count # 0 $a = 4 $a.Count # 1 $a[0] # 4 $a[-1] # 4 メンバーアクセスの列挙 PowerShell 3.0 以降では、リストコレクションに存在しないメンバーへ アクセスすると、自動的に各項目を列挙してメンバーへのアクセスを 試みます。値の取得はできますが、設定はできません。 $files.LastWriteTime # 各ファイルの LastWriteTime を返す 値を設定するには、代わりにメソッドを使用します。 $files.set_LastWriteTime((Get-Date).AddDays(-1)) 関連項目 about_Hash_Tables about_Objects about_For about_Foreach about_While Get-Member ---- 原文: PowerShell-Docs (CC BY 4.0) の翻訳 / PSHelpJaJP |