Проведение нескольких тестов на самом деле меня удивило. Вот обычное использование массива:
var things:Array = [];
things.push("hi!");
trace(things.length);
// traces 1
trace(things);
// traces hi!
Вот если мы установим значение в строку:
var things:Array = [];
things["thing"] = "hi!";
trace(things.length);
// traces 0
trace(things);
// traces an empty string
trace(things["thing"]);
// traces hi!
В основном, если вы добавляете вещи, используя строки, вы устанавливаете свойства, а не добавляете их в массив. Заставляет меня задуматься, почему Array так динамичен.
Так что ... да, посчитайте пункты с циклом for ...