Оператор for...in
Выполняет один или несколько операторов для каждого свойства объекта или для каждого элемента массива или коллекции.
for ( [var] variable in {object | array | collection})
statement
Аргументы
variable
Обязательный. Переменная, которая может представлять любое имя свойства объекта object, любой индекс массива array или любой элемент коллекции collection.object
Объект JScript, в котором выполняется итерация свойств.массив
Массив, в котором выполняется итерация элементов. Может быть объектом Array JScript или массивом .NET Framework.collection
Коллекция, в которой выполняется итерация элементов. Может быть любым классом, реализующим интерфейсы IEnumerable или IEnumerator платформы .NET Framework.statement
Необязательный. Операторы, которые необходимо выполнить для каждого свойства object или каждого элемента array или collection. Могут быть составными операторами.
Заметки
Перед каждой итерацией цикла переменной variable присваивайте следующее имя свойства объекта object, следующий индекс массива array или следующий элемент коллекции collection. Переменную можно использовать любом операторе внутри цикла для ссылки на свойство объекта или элемент массива.
При итерации свойств объекта невозможно определить порядок, в котором имена членов присваиваются переменной, или управлять этим порядком. В языке JScript оператор for...in не может выполнять перебор членов пользовательских объектов, таких как объекты .NET Framework.
Элементы массива перебираются по порядку, начиная с наименьшего индекса и заканчивая наибольшим. Поскольку объекты Array JScript могут быть разреженными, оператор for...in обращается только к определенным элементам массива. Объекты Array JScript могут также быть свойствами "expando". В этом случае индексы массива присваиваются переменной в качестве имен свойств. При обработке многомерных массивов .NET Framework перечисляется только первое измерение.
При итерации коллекции элементы присваиваются переменной в порядке их расположения в коллекции.
Пример 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 для объекта Array JScript, содержащего свойства 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 для коллекции. Здесь метод GetEnumerator объекта System.String предоставляет коллекцию знаков строки.
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: .
Требования
Примечание
Для перебора коллекции требуется версия .NET.