我在ActionScript 3中有一个数组格式如下:
var _arrayList = new Array;
_arrayList["item1"] = true;
_arrayList["item2"] = 56;
_arrayList["item3"] = "john doe";
_arrayList["item4"] = -56.8;
我试图拉动" _arrayList.Length"但它回来了0 ...为什么?
答案 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。数组用于数字索引集合。