Тему пролистал по диагонали.
Вот мой вариант (с использованием первоначальных данных)

Код AS3:
public class SkyBoyTest
{
private static const EMAIL_PROP_NAME:String = "email";
private static const NAME_PROP_NAME:String = "name";
private var customers:Array = [{"name":"John","email":"john@gmail.com"},{"name":"Andrew","email":"andrew@gmail.com"}];
public function SkyBoyTest()
{
var customerNames:Vector.<String> = getCustomersNames();
for each(var name:String in customerNames) {
var email:String = getCustomerEmailByName(name);
trace("customer. name : " + name + ", email : " + email);
}
}
public function getCustomersNames():Vector.<String>
{
var names:Vector.<String> = new Vector.<String>();
for each(var customer:Object in customers) {
if(NAME_PROP_NAME in customer) {
var name:String = customer[NAME_PROP_NAME];
names.push(name);
}
}
return names;
}
public function getCustomerByName(name:String):Object
{
for each(var customer:Object in customers) {
if(customer[NAME_PROP_NAME] == name) {
return customer;
}
}
return null;
}
public function getCustomerEmailByName(name:String):String
{
var customer:Object = getCustomerByName(name);
var email:String = customer ? customer[EMAIL_PROP_NAME] : null;
return email;
}
}
На выходе:

Код:
customer. name : John, email : john@gmail.com
customer. name : Andrew, email : andrew@gmail.com
Хотя лично я распарсил бы этих кастомеров в типизированные объекты.