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

Apache flex 如何在ActionScript 3.0中找到关联数组的长度?,apache-flex,actionscript-3,arrays,Apache Flex,Actionscript 3,Arrays,在ActionScript 3.0中,是否有一种简单的方法可以检索关联数组(作为对象实现)的长度 我知道在AS3中创建关联数组有两种主要方法: 使用字典对象;当按键不需要是字符串时尤其方便 使用对象,只需为每个所需元素创建属性即可。属性名是键,值是值 我的应用程序使用方法2(使用对象类来表示关联数组) 我希望有比我的for循环更自然的东西,它可以手动计算所有元素。我想你只能“手动”计算它们了 一个选项是将整个内容包装在一个类中,并保留一个单独的变量,在添加/删除时更新该变量 您必须像这样在for

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

我知道在AS3中创建关联数组有两种主要方法:

  • 使用
    字典
    对象;当按键不需要是
    字符串时尤其方便
  • 使用
    对象
    ,只需为每个所需元素创建属性即可。属性名是键,值是值
  • 我的应用程序使用方法2(使用
    对象
    类来表示关联数组)


    我希望有比我的
    for
    循环更自然的东西,它可以手动计算所有元素。

    我想你只能“手动”计算它们了


    一个选项是将整个内容包装在一个类中,并保留一个单独的变量,在添加/删除时更新该变量

    您必须像这样在for循环中计算它们。当然,您可以创建一个类并将for循环粘贴到该类中

    有关AS3中集合的一些重要实现,请查看


    编辑2013毫不奇怪,链接会在一段时间后断开。试试这个新的:。

    在这上面做一些测试实际上让我很惊讶。以下是数组的正常用法:

    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!
    
    基本上,如果使用字符串添加内容,则是在设置属性,而不是实际添加到数组中。让我想知道为什么数组是这样动态的

    所以。。。是的,用一个数字来计算物品。。。循环

    var count:int; 
    var key:String; 
    
    for (key in myObject)
    { 
        count++; 
    } 
    
    trace ("myObject has this many keys in it: " + count);
    
    或者,对于每种语法(我还没有测试哪种更快)


    真奇怪!您认为数组的内部结构是否被重新构造为对象?当所有内容都扩展了对象(它是动态的)时,有些类是动态的,有些是静态的。但是为什么数组是动态的呢?虽然可以,但这是皱眉的apon。在API中:“不要使用数组类来创建关联数组……要创建关联数组,请使用对象类。”我打赌第一个更快,但差别很小。我没有投反对票,但链接断了。对于未来的用户,请查看此
    for each (var o:* in myObject)
    {
        count++;
    }