var valuesArray = [
["Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"],
["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"],
["blue" , "green" , "yellow" , "orange" , "black" , "white" , "violet" , "pink" , "purple" , "grey" ]
];
var fn = function(indexed){
return indexed.reduce(function( trans , value){
trans.arr.forEach(function(curArray , i){
var curBranch = (trans.rep[i] = trans.rep[i] || []);
curBranch.push( curArray[value] )
})
return trans;
} , {arr : valuesArray , rep : []}).rep;
};
var arrayIndex = [1, 4, 9];
document.write( JSON.stringify( fn(arrayIndex) ) );
arrayIndex = [9, 4, 1];
document.write('<br>' + JSON.stringify( fn(arrayIndex) ) );
arrayIndex = [9, 9, 3, 4, 1];
document.write('<br>' + JSON.stringify( fn(arrayIndex) ) );
arrayIndex = [99, 1, 2];
document.write('<br>' + JSON.stringify( fn(arrayIndex) ) );