Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   почему не выполняется обход по массиву? (http://www.flasher.ru/forum/showthread.php?t=208194)

ageent 15.06.2014 13:38

почему не выполняется обход по массиву?
 
Привет, все. Объясните плиз почему не работает такая простенькая конструкция как:

Код AS3:

                var ar:Array = new Array(5);
                for each(var index:Number in ar) {
                        trace(1);
                }

почему не выполняется обход по массиву?

Спасибо.

samana 15.06.2014 14:00

Обход выполняется, просто в массиве нет данных, а лишь 5 пустых, зарезервированных мест.
Если вы создаёте массив именно так new Array(5), и если в скобках находится лишь одно число, то создаётся массив длинной равной этому числу, с пустыми значениями (undefined). Вы можете это легко проверить, написав
Код AS3:

trace(ar.length)

Если бы в скобках было чисел больше чем одно, то тогда бы массив создался именно с этими двумя значениями, как и ожидалось.
Лучше создавайте через квадратные скобки, чтобы не запутаться:
Код AS3:

var ar:Array = [5];
for each(var index:Number in ar) {
        trace(1);
}


nubideus 15.06.2014 15:02

просто, в случае Array, for each перечисляет значения свойств.
то есть for each не отличает Array от Object, и перебирает у обоих только видимые для перебирания свойства.

Код AS3:

var ar:Vector.<Object> = new Vector.<Object>(5);
for each(var index:Object in ar) {
        trace(index); // undefined
}



Часовой пояс GMT +4, время: 10:28.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.