从数组集合中获取值数组的最简单/最佳方法是什么?

时间:2008-12-02 19:09:06

标签: flex arrays actionscript collections

我有一个包含任意数量对象的Array Collection。我知道每个Object都有一个给定的属性。是否有一种简单的(也称为“内置”)方法来获取集合中该属性的所有值的数组?

例如,假设我有以下集合:

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。由于我的Collection可能变大,我想避免循环。

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

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

有人有任何建议吗?

感谢。

2 个答案:

答案 0 :(得分:2)

根据docs,ArrayCollection不会将键与值分开。它们作为对象存储在基础数组中。我认为没有办法避免循环它们只提取密钥,因为你需要查看底层数组中的每个对象。

答案 1 :(得分:2)

使用Array属性从ArrayCollection获取基础source对象后,您可以使用Array上的map方法。

您的代码将如下所示:

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