PDA

Просмотр полной версии : Поиск элемента в ArrayCollection


GrMerlin
17.10.2010, 21:21
Каким образом можно найти нужный элемент в переменной типа ArrayCollection, если известно только одно поле объекта (а их, к примеру, несколько). Или, возможно, есть идеи по поводу как адаптировать метод contains под необходимые условия?

GBee
18.10.2010, 10:58
больше на filterFunction походит.

Sneg
18.10.2010, 14:18
Использую что-то вроде этого для небольших массивов и коллекций, для больших лучше писать что-то специальное:
public class ArrayUtil
{
...
public static function findObject(fieldName:String, value:Object,array:Object):Object
{
var index:int = getItemIndex(fieldName,value,array);
if(index < 0)
return null;

if(array is ICollectionView || array is IList)
return array.getItemAt(index);
else
return array[index];
}
public static function getItemIndex(fieldName:String,value:Object,array:Object):int
{
if(!array)
return -1;

if(array is IList)
array = IList(array).toArray();

for( var i:int = 0; i < array.length; i++)
{
var item:Object = array[i];
if(!fieldName && item == value)
return i;

if(fieldName && item.hasOwnProperty(fieldName) && item[fieldName] == value)
return i;
}
return -1;
}
...