2008-12-02 29 views
1

我有任何數量的對象的數組集合。我知道每個對象都有一個給定的屬性。是否有一種簡單的(又稱「內置」)方法來獲取該集合中該屬性的所有值的數組?什麼是從數組集合中獲取數組值的最簡單/最好的方法?

舉例來說,假設我有以下系列:

var myArrayCollection:ArrayCollection = new ArrayCollection(
    {id: 1, name: "a"} 
    {id: 2, name: "b"} 
    {id: 3, name: "c"} 
    {id: 4, name: "d"} 
    .... 
); 

我想要得到的陣列「1,2,3,4 ......」。現在,我必須遍歷Collection並將每個值推送到Array。由於我的集合可以變大,我想避免循環。

var myArray:Array /* of int */ = []; 

for each (var item:Object in myArrayCollection) 
{ 
    myArray.push(item.id); 
} 

有沒有人有任何建議?

謝謝。

回答

2

一旦你從ArrayCollection使用source財產的基本Array對象,你可以使用在Arraymap方法。

您的代碼將是這個樣子:

private function getElementIdArray():Array 
{ 
    var arr:Array = myArrayCollection.source; 
    var ids:Array = arr.map(getElementId); 
    return ids; 
} 

private function getElementId(element:*, index:int, arr:Array):int 
{ 
    return element.id; 
} 
2

根據docs ArrayCollection不保持鍵與值分開。它們作爲對象存儲在底層數組中。我不認爲有什麼辦法可以避免循環它們來提取關鍵字,因爲您需要查看底層數組中的每個對象。

+0

雖然這是真的,每個對象都必須進行檢查,明確循環是沒有必要的。 Array類提供了便利方法來幫助這樣的情況。 – 2008-12-03 05:37:53

+0

該循環只有一個不同的作者。儘管如此,最好還是在沒有其他原因的情況下使用框架提供的機制。 – tvanfosson 2008-12-03 22:06:44

相關問題