есть же стандартный метод filter, он мне кажется более правильный

Код AS3:
var arr:Array = new Array();
arr.push({name:"one", manager:false});
arr.push({name:"tru", manager:true});
arr.push({name:"fri", manager:false});
arr.push({name:"one", manager:true});
arr.push({name:"tru", manager:true});
arr.push({name:"fri", manager:true});
trace("Employees:");
arr.forEach(traceEmployee);
/*
Employees:
one
tru (manager)
fri
one (manager)
tru (manager)
fri (manager)
*/
var arr2:Array = arr.filter(isManager);
trace("Managers:");
arr2.forEach(traceEmployee);
/*
Managers:
one
fri
one (manager)
tru (manager)
fri (manager)
*/
function isManager(element:*, index:int, arr:Array):Boolean {
for (var i:uint = index+1; i<arr.length; i++){
if(arr[i]["name"] == element["name"] && arr[i]["manager"] == element["manager"]){
return false;
}
}
return true;
}
function traceEmployee(element:*, index:int, arr:Array):void {
trace("\t" + element.name + ((element.manager) ? " (manager)" : ""));
}