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