我有一个包含任意数量对象的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);
}
有人有任何建议吗?
感谢。
答案 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;
}