访问数组长度返回为零

时间:2014-06-18 05:54:23

标签: arrays actionscript-3

我在ActionScript 3中有一个数组格式如下:

var _arrayList = new Array;
_arrayList["item1"] = true;
_arrayList["item2"] = 56;
_arrayList["item3"] = "john doe";
_arrayList["item4"] = -56.8;

我试图拉动" _arrayList.Length"但它回来了0 ...为什么?

1 个答案:

答案 0 :(得分:1)

因为你这样做的方式使数组"关联"。在Action Script中,每个类都是一个具有动态属性的基本对象。数组同时执行 - 包含索引元素,并具有动态属性。

以下是常规数组的示例:

var array:Array = new Array();
array.push(value); // equal to array[0] = value;
array.push(56); // equal to array[1] = value;

array[20] = 'test'; // will put 20th element to be 'test'

如果使用此方法,则数组的length将不是0。因此,您可以使用for循环:

var total:uint = array.length;
for (var i:uint = 0; i < total; i++) {
    trace (array[i]);
}

但是当键不是数字时,你实际上是在设置&#34;属性&#34;到数组,因此长度为0。同样,您可以循环使用它们,但使用for-in

for (var key:String in array) {
    trace (array[key]);
}

此处的密钥不会是0, 1, 2, 3,依此类推,而是item1, item2, item3。 (请记住,订单不会被保留!)

因此,基本结论是,如果使用非数字键,则使用Object。数组用于数字索引集合。