这是我的代码,无法获得数组的长度。
package com.mypro {
public class MyEve {
public var process:Array ;
public function MyEve() {
// constructor code
this.process = new Array();
trace("this.process " + this.process)
this.process["CONFIG_XML_LOADING"] = 'Configuration XML Loading';
this.process['CONFIG_XML_LOADED'] = 'Configuration XML Loaded';
trace("this.process +++ " + this.process.length)
}
}
}
输出
// Trace
this.process
this.process +++ 0
答案 0 :(得分:4)
虽然可以将数组用作关联数组,但是长度属性不起作用 - 它只返回0.你需要自己使用for..in或a计算长度:< / p>
的for..in:
var len:int = 0;
for ( var key:String in this.process )
len++;
每个:
var len:int = 0;
for each( var value:String in this.process )
len++;
如前所述,如果你使用Object(String key)或Dictionary(Object key)来做这类事情可能会更好。
答案 1 :(得分:1)
您应该使用Object来创建关联数组。
public var process:Object;
public function MyEve() {
// constructor code
this.process = new Object();
trace("this.process " + this.process)
this.process["CONFIG_XML_LOADING"] = 'Configuration XML Loading';
this.process['CONFIG_XML_LOADED'] = 'Configuration XML Loaded';
trace("this.process +++ " + this.process.length)
}
阅读this了解详情。
编辑: 没错。由于divillysausages指出你试图得到长度。这对于Objects来说不是直接可能的。但是,您可以使用for ... in循环遍历Object的属性,这使得计算对象的每个属性变得微不足道。 Here和here是如何使用它的很好的例子。
答案 2 :(得分:0)
请参阅AS3参考中的[] array access。
您必须对数组使用整数值,而不是Array
使用Object
或Dictionary