是否有一种简单的方法可以在ActionScript 3.0中检索关联数组的长度(在Object
中实现)?
据我所知,在AS3中有两种主要的创建关联数组的方法:
Dictionary
个对象;当密钥不需要是string
Object
,只需为每个所需元素创建属性即可。属性名称是键,值是,值。我的应用程序使用方法#2(使用Object
类来表示关联数组)。
我希望有一些比for
循环更本土的东西,它会手动计算所有元素。
答案 0 :(得分:9)
你必须像你一样在for循环中计算它们。当然,你可以创建一个类并在该类中坚持for循环。
对于AS3中收藏的一些重要说明,请检查these guys。
编辑2013 毫不奇怪,链接确实会破坏。试试这个新的:http://www.grindheadgames.com/get-the-length-of-an-object。
答案 1 :(得分:4)
对此进行一些测试实际上让我感到惊讶。这是数组的正常使用:
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 ... in循环来计算物品!
答案 2 :(得分:3)
我认为你会“手动”计算它们。
一个选项是将整个事物包装在一个类中,并保留一个单独的变量,在添加/删除时更新。
答案 3 :(得分:3)
var count:int;
var key:String;
for (key in myObject)
{
count++;
}
trace ("myObject has this many keys in it: " + count);
或者,for-each语法(我没有测试过哪个更快)
for each (var o:* in myObject)
{
count++;
}