function join(lookupTable, mainTable, lookupKey, mainKey, select) {
var l = lookupTable.length,
m = mainTable.length,
lookupIndex = [],
output = [];
for (var i = 0; i < l; i++) {
var row = lookupTable[i];
lookupIndex[row[lookupKey]] = row;
}
for (var j = 0; j < m; j++) {
var y = mainTable[j];
var x = lookupIndex[y[mainKey]];
output.push(select(y, x));
}
return output;
}