В ActionScript 3 добавлен новый вид цикла
for each..in который работает аналогично прежнему
for..in, но перебираются значения объекта, а не ключи. Пример:
Код:
var object:Object = new Object();
object.name = "senocular";
object.id = 2867;
object.isModerator = true;
for each (var value:* in object){
trace(value);
}
/* Output:
true
2867
senocular
*/
// А прежний for..in:
for (var key:String in object){
trace(key + ": " + object[key]); // object[key] is value
}
/* Output:
isModerator: true
id: 2867
name: senocular
*/
Учтите, в цикле for each..in нельзя получить значение ключа.
Так же обратите внимание, что ActionScript 3 в циклах (for..in и for each..in) сохраняет порядок элементов в массиве, а ActionScript 1 и 2 перебирал в порядке обратном добавлению элементов. См. пример:
Код:
var array:Array = new Array();
array[1] = 1;
array[0] = 2;
array[2] = 3;
for (var key:String in array){
trace("array[" + key + "] = "+ array[key]);
}
Output AS 1 & AS 2:
Код:
array[2] = 3
array[0] = 2
array[1] = 1
Output AS 3:
Код:
array[0] = 2
array[1] = 1
array[2] = 3