Какой самый простой / лучший способ получить массив значений из коллекции Array? - PullRequest
1 голос
/ 02 декабря 2008

У меня есть коллекция массивов с любым количеством объектов. Я знаю, что каждый объект имеет данное свойство. Есть ли простой (он же «встроенный») способ получить массив всех значений этого свойства в коллекции?

Например, допустим, у меня есть следующая коллекция:

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 ....". Прямо сейчас я должен пройти через коллекцию и передать каждое значение в массив. Поскольку моя коллекция может стать большой, я хочу избежать зацикливания.

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

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

У кого-нибудь есть предложения?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 03 декабря 2008

Получив базовый объект Array из ArrayCollection с помощью свойства source, вы можете использовать метод map для Array.

Ваш код будет выглядеть примерно так:

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 голосов
/ 02 декабря 2008

Согласно документам ArrayCollection не разделяет ключи отдельно от значений. Они хранятся в виде объектов в базовом массиве. Я не думаю, что есть какой-либо способ избежать зацикливания на них, чтобы извлечь только ключи, так как вам нужно посмотреть на каждый объект в базовом массиве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...