Я обычно делаю так.
2 массива (если критична скорость <Vector>). Например:

Код AS3:
//Код приведен фрагментально
private var bonuses:Array;
private var bonusesToRemove:Array;
//Если надо удалить бонус, то пушим его в bonusesToRemove
private function removeBonus(bonus:Bonus):void
{
bonusesToRemove.push(bonus);
}
//А вот эту функцию, реально удаляющую бонусы вызываем в самом конце цикла обновления
private function actualBonusRemoval():void
{
var n:int = bonusesToRemove.length;
var bonusIndex:int;
for (var i:int = 0; i < n; i++)
{
bonusIndex= bonuses.indexOf(bonusesToRemove[i]);
if ( bonusIndex> -1)
{
removeChild(bonusesToRemove[i]);
bonuses.splice(bonusIndex, 1);
trace("removed" + bonusesToRemove[i]);
}
}
bonusesToRemove= [];
}