Использую что-то вроде этого для небольших массивов и коллекций, для больших лучше писать что-то специальное:
Код AS3:
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;
}
...