for...in 语句

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

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()
{
    // Initialize the object.
    var obj = {"a" : "Athens" , "b" : "Belgrade", "c" : "Cairo"}

    // Iterate over the properties and create the string result.
    var s = ""
    for (var key in obj)
    {
        s += key + ":  " + obj[key];
        s += "\n";
    }
    return (s);
}

此函数返回包含以下内容的字符串:

a:  Athens
b:  Belgrade
c:  Cairo

示例 2

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

function ForInDemo2()
{
    // Initialize the array.
    var arr = 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
    // and create the string result.
    var s = "";
    for (var key in arr)
    {
        s += key + ":  " + arr[key];
        s += "\n";
    }
    
    return (s);
}

此函数返回包含以下内容的字符串:

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

示例 3

下面的示例阐释了配合使用 for ... in 语句和集合的方法。 其中,System.String 对象的 GetEnumerator 方法提供了字符串中字符的集合。

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

    // Iterate over the collection elements and
    // create the string result.
    var s = "";

    var i : int = 0;
    for (var elem in chars)
    {
        s += i + ": " + elem
        s += "\n";

        i++;
    }

    return(s);
}

此函数返回包含以下内容的字符串:

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

要求

版本 5

提示

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

请参见

参考

for 语句

while 语句

String.GetEnumerator

其他资源

JScript 数组