嗨我在actionscript中有一个数组
var arr : Array = new Array();
arr["fsad"] = 1;
trace(arr.length);
现在用一个关联字符串为它添加一个条目,然后计算长度我得到的长度为0,但为什么呢?我怎么能现在迭代它?
提前致谢
塞巴斯蒂安
答案 0 :(得分:2)
你想要完成的事情被称为字典我猜:)
答案 1 :(得分:1)
嗯,引用reference:
不要使用Array类来创建关联数组(也称为哈希),它们是包含命名元素而不是编号元素的数据结构。要创建关联数组,请使用Object类。尽管ActionScript允许您使用Array类创建关联数组,但您不能将任何Array类方法或属性与关联数组一起使用。
我不确定为什么AS3仍允许以关联方式使用数组 - 也许他们担心AS2迁移 - 但最好避免使用。据我所知,像length
和pop()
这样的内置数组灯具只会忽略使用不是整数的键添加的任何内容,但它们的行为也可能无法预测。
答案 2 :(得分:1)
答案 3 :(得分:0)
使用spidermonkey在JavaScript(它是ActionScript的兄弟)中:
var obj = new Object(); // {}
obj["foo"] = 1;
print(obj.__count__); => 1 // non-standard Gecko
var arr = new Array(); // []
arr.push(1);
print(arr.length); => 1
对数组使用Array,对字典使用Object。它不像PHP那样使用相同的类型完成所有事情。
答案 4 :(得分:0)
您可以使用代理创建自己的关联数组...这会带来高性能成本,但您可以实现覆盖getProperty
和setProperty
以及for each in
的数组访问权限for in
分别覆盖nextNameIndex
以及nextValue
和nextName
...您还可以实现数组的forEach
,filter
,{{1} },map
,any
等等方法,所以它看起来像是来自外部的真实数组......但是你应该只做那种情况,在这种情况下,性能不重要或不可避免......
格尔茨
back2dos