次の方法で共有


for...in ステートメント

更新 : 2007 年 11 月

オブジェクトの各プロパティ、または配列やコレクションの各要素に対して、1 つ以上のステートメントを実行します。

for ( [var] variable in {object | array | collection})
      statement

引数

  • variable
    必ず指定します。object のプロパティ名、array のインデックス、または collection の要素を格納するために使用する変数を指定します。

  • object
    反復処理の対象となる JScript オブジェクトを指定します。

  • array
    反復処理の対象となる配列を指定します。JScript Array オブジェクトまたは .NET Framework 配列を指定できます。

  • collection
    反復処理の対象となるコレクションを指定します。.NET Framework の IEnumerable インターフェイスまたは IEnumerator インターフェイスを実装する任意のクラスを指定できます。

  • statement
    省略可能です。object または collection のプロパティ、または array の各メンバに対して実行するステートメントを指定します。複合ステートメントを指定することもできます。

解説

ループの各反復処理の実行前に、object の次のプロパティ名、array の次のインデックス、または collection の次の要素が variable に代入されます。ループ内のステートメントで variable を使用して、object のプロパティまたは array の要素を参照できます。

オブジェクトに対して反復処理を行う場合は、variable に代入されるオブジェクトのメンバ名の順番を決定したり制御したりすることはできません。for...in ステートメントは、.NET Framework オブジェクトなどの JScript 以外のオブジェクトのメンバに対してはループを実行できません。

配列の反復処理は、要素の順序で実行されます。最小のインデックスから開始し、最大のインデックスで終了します。JScript の Array オブジェクトは疎配列であるため、for...in ステートメントは、配列の定義済み要素だけにアクセスします。JScript の Array オブジェクトには expando プロパティが含まれることがあります。その場合は、配列インデックスがプロパティ名として variable に代入されます。配列が .NET Framework の多次元配列の場合は、最初の次元だけが列挙されます。

コレクションに対する反復操作の場合は、コレクション内の順序どおりに要素が variable に代入されます。

例 1

次のコードは、for ... in ステートメントで、連想処理可能な配列として使用する例です。

function ForInDemo1() {
   var ret = "";

   // Initialize the object with properties and values.
   var obj : Object = {"a" : "Athens" , 
                       "b" : "Belgrade", 
                       "c" : "Cairo"};

   // Iterate over the properties.
   for (var key in obj)
      // Loop and assign 'a', 'b', and 'c' to key.
      ret += key + ":\t" + obj[key] + "\n";

   return(ret);
} // ForInDemo1

この関数は、以下を含む文字列を返します。

a:      Athens
b:      Belgrade
c:      Cairo

例 2

expando プロパティを含む JScript の Array オブジェクトと共に for ... in ステートメントを使用する例を次に示します。

function ForInDemo2() {
   var ret = "";

   // Initialize the array.
   var arr : Array = new Array("zero","one","two");
   // Add a few expando properties to the array.
   arr["orange"] = "fruit";
   arr["carrot"] = "vegetable";

   // Iterate over the properties and elements.
   for (var key in arr)
      // Loop and assign 0, 1, 2, 'orange', and 'carrot' to key.
      ret += key + ":\t" + arr[key] + "\n";

   return(ret);
} // ForInDemo2

この関数は、以下を含む文字列を返します。

0:      zero
1:      one
2:      two
orange: fruit
carrot: vegetable

例 3

コレクションと共に for ... in ステートメントを使用する例を次に示します。この例の System.String オブジェクトの GetEnumerator メソッドは、文字列内の文字のコレクションを提供します。

function ForInDemo3() {
   var ret = "";

   // Initialize collection.
   var str : System.String = "Test.";
   var chars : System.CharEnumerator = str.GetEnumerator();

   // Iterate over the collection elements.
   var i : int = 0;
   for (var elem in chars) {
      // Loop and assign 'T', 'e', 's', 't', and '.' to elem.
      ret += i + ":\t" + elem + "\n";
      i++;
   }

   return(ret);
} // ForInDemo3

この関数は、以下を含む文字列を返します。

0:      T
1:      e
2:      s
3:      t
4:      .

必要条件

Version 5

メモ :

コレクションに対してループを実行するには、Version .NET が必要です。

参照

参照

for ステートメント

while ステートメント

String.GetEnumerator

その他の技術情報

JScript の配列