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