代码之家  ›  专栏  ›  技术社区  ›  calvinf

Flex中字典长度的计算

  •  7
  • calvinf  · 技术社区  · 17 年前

    var d:Dictionary = new Dictionary();
    d["a"] = "alpha";
    d["b"] = "beta";
    

    6 回复  |  直到 10 年前
        1
  •  12
  •   CookieOfFortune    17 年前

    不,除了在元素中循环外,没有其他方法可以检查对象的长度(Dictionary几乎是一个支持非字符串键的对象)。

    http://www.flexer.info/2008/07/31/how-to-find-an-objects-length/

    您可能不必担心检查属性是否为内部属性。

        2
  •  3
  •   marketer    17 年前

    DicitonaryUtil

    方法是:

        public static function getKeys(d:Dictionary):Array
        {
            var a:Array = new Array();
    
            for (var key:Object in d)
            {
                a.push(key);
            }
    
            return a;
        }
    

        3
  •  1
  •   nevets1219    17 年前

    你可以用 associative arrays 而是因为我认为不可能检查Dictionary对象的长度。但是,您可以扩展Dictionary类,添加该功能并重写相应的方法。

    var d:Dictionary = new Dictionary();
    d["hi"] = "you"
    d["a"] = "b"
    for (var obj:Object in d) {
      trace(obj);
    }
    // Prints "hi" and "a"
    

    你也可以看看 here 有关使用“setPropertyEnumerable”的信息,但我认为这对对象比字典更有用。

        4
  •  0
  •   tousdan    17 年前

    尝试扩展代理或只是做一个包装。

        5
  •  0
  •   Craig    15 年前

    对于任何遇到这个问题的人,现在有一个DictionaryUtil的更新。 你现在可以打电话了。。

    var count:int = DictionaryUtil.getKeyCount(myDictionary);
    
        6
  •  0
  •   gbdcool    9 年前

    keys Dictionary 并检查 length 属于 钥匙 array

    var d:Dictionary = new Dictionary();
    d["a"] = "alpha";
    d["b"] = "beta";
    var count:int = DictionaryUtil.getKeys(d).length;
    
    推荐文章