Вариант без понтов:
isEmpty=function(arr){return arr.toString()===""}
replace=function(arr){
var newarr=[]
for(var i in arr){
if(arr[i].keys&&arr[i].generator){
while(!isEmpty(arr[i].keys)){
newarr.push({key: arr[i].keys[0], generator: arr[i].generator})
arr[i].keys=arr[i].keys.slice(1)
}
}
}
return newarr
}