for...in 语句

更新:2007 年 11 月

为一个对象的每个属性,或一个数组或集合中的每个元素,执行一个或多个语句。

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

参数

  • variable
    必需。一个变量,可以是 object 的任何属性名、array 的任何索引或 collection 的任何元素。

  • object
    要对其进行循环的 JScript 对象。

  • array
    要对其进行循环的数组。它可以是 JScript Array 对象或 .NET Framework 数组。

  • collection
    要对其进行循环的集合。它可以是从 .NET Framework 实现 IEnumerableIEnumerator 接口的任何类。

  • statement
    可选项。要为 object 的每个属性或者 array 或 collection 的每个元素执行的语句。可以是复合语句。

备注

在循环的每一次循环之前,会为 variable 分配 object 的下一个属性名、array 的下一个索引或 collection 的下一个元素。您可以将 variable 用于循环中的任何语句,以便引用 object 的属性或 array 的元素。

当在一个对象上循环时,没有办法确定或控制将对象的成员名赋给 variable 的顺序。for...in 语句无法在非 JScript 对象的成员上循环,例如,.NET Framework 对象。

数组按元素顺序循环,从最小的索引开始,到最大的索引结束。因为 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

此示例阐释了配合使用 for ... in 语句和 JScript Array 对象(具有 expando 属性)的方法。

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:      .

要求

版本 5

说明:

在集合上循环需要 .NET 版本

请参见

参考

for 语句

while 语句

String.GetEnumerator

其他资源

JScript 数组