配列について
- 08/26/2020
- 14分読み取り
-
- S
- s
- c
簡単な説明
アイテムのコレクションを格納するために設計されたデータ構造である配列について説明します。
長い説明
配列は、アイテムのコレクションを格納するように設計されたデータ構造です。項目には、同じタイプまたは異なるタイプを指定できます。
Windows PowerShell3から始まります。,0、ゼロまたは一つのオブジェクトの集合は、配列のいくつかのプロパティ。
配列の作成と初期化
配列を作成して初期化するには、変数に複数の値を割り当てます。 配列に格納されている値はコンマで区切られ、代入演算子(=
)によって変数名から区切られます。,
たとえば、$A
という名前の配列を作成するには、の七つの数値(int)値を含む配列を作成します。22, 5, 10, 8, 12, 9, そして80、タイプ:
カンマは、単一のアイテムの前にthecommaを配置することによって、単一のアイテム配列を初期化するために使用すること
たとえば、$B
という名前の単一の項目配列を作成するには、次のように入力します。
範囲演算子(..
)を使用して、配列を作成して初期化することもできます。,次の例では、5から8までの値を含む配列を作成します。
結果として、$C
には5、6、7、および8の四つの値が含まれます。
データ型が指定されていない場合、PowerShellは各配列をobjectarray(System)として作成します。オブジェクト)。 配列のデータ型を決定するには、gettype()メソッドを使用します。, たとえば、$A
配列のデータ型を決定するには、次のように入力します。
厳密に型付けされた配列、つまり特定の型の値のみを含む配列を作成するには、変数をstring、long、int32などの配列型としてキャストします。 配列をキャストするには、変数の名前の前に、角かっこで囲まれた配列型を付けます。, たとえば、$ia
という名前の32ビット整数配列を作成するには、次のように入力します。
結果として、$ia
配列には整数のみを含めることができます。
あなたはでサポートされている任意の型にキャストされる配列を作成することができまMicrosoft.NET フレームワーク たとえば、Get-Process
がpresentプロセスを取得するオブジェクトは、システムのものです。診断。プロセスタイプ。, プロセスオブジェクトの異なる型の配列を作成するには、次のコマンドを入力します。
配列部分式演算子
配列部分式演算子は、内部のステートメントから配列を作成します。 演算子の中のステートメントが生成するものは何でも、演算子はそれを配列に配置します。 ゼロまたは一つのオブジェクトがあっても。
配列演算子の構文は次のとおりです。
配列演算子を使用して、ゼロまたは一つのオブジェクトの配列を作成できます。, Forexample:
配列演算子は、オブジェクトを取得するときにスクリプトで便利ですが、取得するオブジェクトの数はわかりません。 たとえば、
配列部分式演算子の詳細については、”about_operators”を参照してください。
配列要素へのアクセスと使用
配列の読み取り
配列を参照するには、変数名を使用します。 配列内のすべての要素を表示するには、配列名を入力します。, たとえば、$a
が0、1、2、9までの整数を含む配列であると仮定します。
配列の要素を参照するには、位置0で始まるインデックスを使用します。 インデックス番号を括弧内に囲みます。, たとえば、$a
配列の最初の要素を表示するには、次のように入力します。
$a
配列の第三の要素を表示するには、次のように入力します。
インデックスの範囲演算子を使用して配列の一部を取得できます。 例えば、配列の第二から第五の要素を取得するには、次のようにします。
負の数は配列の最後から数えます。, たとえば、”-1″は配列の最後の要素。 配列の最後の三つの要素をインデックス昇順で表示するには、次のように入力します。
負のインデックスを降順で入力すると、出力が変わります。
ただし、この表記を使用する場合は注意してください。 表記法は、end境界から配列の先頭までサイクルされます。,
プラス演算子(+
)を使用して、範囲を配列の要素のリストと組み合わせることができます。 たとえば、インデックス位置0、2、および4から6の要素を表示するには、次のように入力します。
また、複数の範囲と個々の要素を一覧表示するには、plusoperatorを使用できます。,
配列要素に対する反復
ForEach、For、Whileループなどのループ構造を使用して、配列内の要素を参照することもできます。 たとえば、$a
配列の要素を表示するためにForEachループを使用するには、次のように入力します。
Foreachループは配列の終わりに達するまで配列,
Forループは、配列内の要素を調べるときにカウンタをインクリメントするときに便利です。 たとえば、Forループを使用して配列内の他のすべての値を返すには、次のように入力します。
Whileループを使用して、definedconditionがtrueでなくなるまで配列内の要素を表示できます。, たとえば、$a
配列のインデックスが4より小さいときに
配列のプロパティ
CountまたはLengthまたはLongLength
配列内にあるアイテムの数を決定するには、iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””iv id=””プロパティまたはそのCount
エイリアス。 Longlength
配列に2,147,483,647以上の要素が含まれている場合に便利です。
Rank
配列内の次元数を返します。, PowerShellのほとんどの配列は、一つの次元のみです。 次の例のように:
次の例は、.Net Frameworkを使用して真の多次元配列を作成する方法を示しています。
配列のメソッド
Clear
すべての要素値を配列の要素タイプのデフォルト値に設定します。Clear()メソッドは配列のサイズをリセットしません。,
次の例では、$a
はオブジェクトの配列です。
この例では、$intA
整数を含むように明示的に型指定されています。
ForEach
配列内のすべての要素を反復処理し、配列の各要素に対して指定された操作を実行できます。
ForEachメソッドには、異なる操作を実行するいくつかのオーバーロードがあります。,
ForEach(scriptblock expression)
ForEach(scriptblock expression,object arguments)
このメソッドはPowerShell v4で追加されました。
注
構文にはスクリプトブロックの使用が必要です。 Scriptblockが唯一のパラメーターである場合、括弧は省略可能です。 また、メソッドと開き括弧または中かっこの間にスペースを入れてはいけません。
次の例は、foreachメソッドを使用する方法を示しています。 この場合、intentは配列内の要素の正方形の値を生成することです。,
-ArgumentList
ForEach-Object
のパラメータと同様に、arguments
パラメータでは、引数の配列を受け入れるように設定されたスクリプトブロックに渡すことができます。
ArgumentListの動作の詳細については、”about_splatting”を参照してください。,
ForEach(type convertToType)
ForEach
メソッドを使用すると、要素をdifferenttypeに素早くキャストできます。次の例では、文字列の日付のリストを型に変換する方法を示します。
ForEach(string propertyName)
ForEach(string propertyName,object newValue)
ForEach
メソッドを使用すると、コレクション内のすべてのアイテムのpropertyvaluesをすばやく取得または設定できます。,
ForEach(string methodName)
ForEach(string methodName,object arguments)
最後に、ForEach
メソッドを使用して、コレクション内のすべての項目に対してメソッドを実行できます。
-ArgumentList
ForEach-Object
のパラメータと同様に、arguments
パラメータでは、引数の配列を受け入れるように設定されたスクリプトブロックに渡すことができます。
メモ
Windows PowerShell3以降です。,0コレクション内の各アイテムのプロパティとexecutingmethodsの取得は、”Methodsof scalar objects and collections”を使用して行うこともできます。
ここで、
は配列の要素をフィルタリングまたは選択できます。 スクリプトは、ゼロ(0)、空の文字列、$false
または$null
Where
Where
メソッドの定義があります。,
注
構文にはスクリプトブロックの使用が必要です。 Scriptblockが唯一のパラメーターである場合、括弧は省略可能です。 また、メソッドと開き括弧または中かっこの間にスペースを入れてはいけません。
Expression
はフィルタリングに必要なスクリプトブロックであり、mode
オプションの引数は追加の選択機能を可能にし、numberToReturn
オプションの引数はフィルタから返されるアイテムの数を制限する機能を可能にします。,p>mode
の許容値は次のとおりです。
- Default(0)-すべてのアイテムを返す
- First(1)-最初のアイテムを返す
- Last(2)-最後のアイテムを返す
- SkipUntil(3)-条件が真になるまで項目をスキップし、残りのアイテムを返す
- Until(4)-条件が真になるまですべてのアイテムを返す
- Until(4)-条件が真になるまですべてのアイテムを返す
- split(5)-二つの要素の配列を返します
- 最初の要素には一致する項目が含まれています
- 第二の要素には残りの項目が含まれています
次の例では、配列からすべての奇数を選択する方法を示しています。,
この例では、空でない文字列を選択する方法を示します。
デフォルト
Default
モードは、Expression
スクリプトブロックを使用して項目をフィルタ
numberToReturn
が指定されている場合、返されるアイテムの最大数を指定します。,
注意
Default
モードとFirst
モードの両方が最初の(numberToReturn
)アイテムを返し、同じ意味で使用できます。
Last
SkipUntil
SkipUntil
モードは、オブジェクトがスクリプトブロック式フィルターを通過するまで、コレクション内のすべてのオブジェクトをスキ その後、残りのすべてのcollectionitemsをテストせずに返します。 一通の項目をいただきました。
これは、返されたコレクションに、テストされていない渡し項目と非渡し項目の両方が含まれていることを意味します。,
返されるアイテムの数は、numberToReturn
引数に値を渡すことによって制限することができます。
まで
Until
モードはSkipUntil
モードを反転します。 項目がスクリプトブロック式を通過するまで、acollection内のすべての項目を返します。 Itempassesがscriptblock式になると、Where
メソッドはアイテムの処理を停止します。
これは、Where
メソッドから渡されないアイテムの最初のセットを受け取ることを意味します。, 後一項の経過探しも、予約も、支払も、全部エ確認しておりませんまたは返却されます。
返されるアイテムの数は、numberToReturn
引数に値を渡すことによって制限することができます。
注意
Until
とSkipUntil
batchofアイテムをテストしないことを前提として動作します。
Until
最初のパスの前の項目を返します。
SkipUntil
最初に渡されたアイテムを含む、最初のパスの後のすべてのアイテムを返します。,
Split
Split
モードは、コレクション項目を二つの別々のコレクションに分割またはグループ化します。 Scriptblock式を渡すものと、渡さないもの。
numberToReturn
が指定されている場合、最初のコレクションには、指定された値を超えないようにパス項目が含まれています。
残りのオブジェクトは、式フィルタを渡すオブジェクトでも、第二のコレクションに変換されます。,
配列のメンバーを取得する
LengthプロパティやSetValueメソッドなど、配列のプロパティとメソッドを取得するには、Get-Member
コマンドレットのInputObjectパラメーターを使用します。
配列をGet-Member
にパイプすると、PowerShellはアイテムを一度に送信し、Get-Member
は配列内の各アイテムのタイプを返します(ignoringduplicates)。
InputObjectパラメーターを使用すると、Get-Member
は配列のメンバーを返します。,
たとえば、次のコマンドは、$a
arrayvariableのメンバーを取得します。
Get-Member
コマンドレットにパイプされる値の前にカンマ(,)を入力することで、配列のメンバーを取得することもできます。 コンマは、配列の配列の中に配列を作ります。 PowerShellは配列を一度にパイプし、Get-Member
は配列のメンバーを返します。 次の二つの例のように。,
配列の操作
配列内の要素を変更し、配列に要素を追加し、二つの配列から第三の配列に値を組み合わせることができます。
配列内の特定の要素の値を変更するには、変更する要素のarraynameとインデックスを指定し、アサインメント演算子(=
)を使用して要素, たとえば、$a
配列(インデックス位置1)の第二の項目の値を10に変更するには、次のように入力します。
配列のSetValueメソッドを使用して値を変更することもできます。 次の例では、$a
arrayto500の第二の値(インデックス位置1)を変更します。
+=
演算子を使用して、配列に要素を追加できます。 次の例は、$a
配列に要素を追加する方法を示しています。,
注意
+=
演算子を使用すると、PowerShellは実際に元の配列の値と追加された値で新しい配列を作成します。 これは、操作が数回繰り返されたり、配列のサイズが大きすぎる場合、パフォーマンスの問題を引き起こす可能性があります。
配列から要素を削除するのは簡単ではありませんが、既存の配列の選択された要素のみを含むnewarrayを作成できます。, たとえば、$t
配列を作成するには、$a
配列のすべての要素をインデックス位置2の値を除いて次のように入力します。
二つの配列を単一の配列に結合するには、プラス演算子(+
)を使用します。 次の例では、二つの配列を作成し、それらを組み合わせてから、組み合わせた配列を表示します。
結果として、$z
配列には1、3、5、および9が含まれます。,
配列を削除するには、$null
の値を配列に割り当てます。 次のコマンドは、$a
変数の配列を削除します。
$a = $null
Remove-Item
コマンドレットを使用することもできますが、特に大きな配列の場合は$null
isfasterの値を割り当てます。
ゼロまたは一つの配列
Windows PowerShell3.0以降、ゼロまたは一つのオブジェクトのコレクションにはCountおよびLengthプロパティがあります。 また、oneobjectの配列にインデックスを付けることもできます。, この機能ではなスクリプティング誤差を防止するためには、acommandることを期待集がより少ない石二鳥の優れものだ。
次の例では、この機能を示しています。
ゼロオブジェクト
一つのオブジェクト
システムのインデックス作成サポート。タプルオブジェにあたって
ユー6.1追加の支援のための物価連動アクセスのタプルオブジェ、arrays.,たとえば、
配列やその他のコレクションオブジェクトとは異なり、タプルオブジェクトは、パイプラインを介して渡されたとき、またはオブ
詳細については、”システム”を参照してください。タプル
も参照してください
- about_Assignment_Operators
- about_Hash_Tables
- about_Operators
- about_For
- about_Foreach
- about_While