2008-11-12 81 views
10

是否有一種簡單的方法可以在ActionScript 3.0中檢索關聯數組的長度(作爲Object實現)?如何在ActionScript 3.0中查找關聯數組的長度?

據我所知,有創造AS3關聯數組的兩種主要方式:

  1. 使用Dictionary對象;特別方便時的關鍵並不需要是一個string
  2. 使用Object,並簡單地爲每一個需要的元素屬性。屬性名稱是關鍵,值就是價值。

我的應用程序使用方法#2(使用Object類來表示關聯數組)。

我希望有一些東西比我for循環,人工計數的所有元素更天然。

回答

9

你必須像你一樣在for循環中對它們進行計數。當然,你可以創建一個課堂並在該課程中堅持使用for循環。

對於集合在AS3一些偉大的implmentations,檢查these guys

編輯2013毫不奇怪,鏈接不要時間後分手。試試這個新的:http://www.grindheadgames.com/get-the-length-of-an-object

+0

爲什麼downvote 4年之後? – 2012-02-15 15:41:27

+0

我沒有downvote,但鏈接被打破。對於未來的用戶,請查看http://www.grindheadgames.com/get-the-length-of-an-object – 2013-05-25 18:43:51

3

我認爲你被卡在「手動」計數。

的辦法是來包裝整個事情中的一類,並保持您更新您添加/刪除一個獨立的變量。

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循環!

+0

這很奇怪!你認爲Array是否在內部被重新改寫爲Object? – defmeta 2008-11-16 00:22:22

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