Разница между «for in» и «for each»

Цикл «for in» перебирает индексы элементов массива или списка, а цикл «for each» перебирает элементы массива или списка.

Пример 1: массив

Зададим общий массив данных:

var mas: Array = [2, 5, 9];

Применяем цикл «for in»:

for (var item in mas) {
  trace("item = ", item);
}

Вывод будет следующим:

item = 0
item = 1
item = 2

А т.е. индексы самого массива, которые можно использовать и получить элементы массива:

for (var item: String in mas) {
  trace(mas[item]);
}

Вывод:

2
5
9

Применяем цикл «for each»:

for each (var item in mas) {
  trace(item);
}

Вывод:

2
5
9

Как видно, переменной item присваивается значение элемента массива, как бы минуя индекс.

Пример 2: объект

Зададим начальные данные — объект с полями.

var obj: Object = {item1: 2, item2: 34, item3: 45};

Применяем цикл «for in»:

for (var key: String in obj) {
  trace(key);
}

Вывод будет следующим:

item1
item2
item3

Применяем цикл «for each»:

for each (var item: Object in obj) {
  trace(item);
}

Вывод:

2
34
45