如何在ActionScript 3.0中找到关联数组的长度?

时间:2008-11-12 18:53:25

标签: flex actionscript-3 arrays

是否有一种简单的方法可以在ActionScript 3.0中检索关联数组的长度(在Object中实现)?

据我所知,在AS3中有两种主要的创建关联数组的方法:

  1. 使用Dictionary个对象;当密钥不需要是string
  2. 时,尤其方便
  3. 使用Object,只需为每个所需元素创建属性即可。属性名称是键,值是,值。
  4. 我的应用程序使用方法#2(使用Object类来表示关联数组)。

    我希望有一些比for循环更本土的东西,它会手动计算所有元素。

4 个答案:

答案 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++;
}