You're passing the actual value of strFormName into the autocompleter. You probably wanted to do this instead:
function autoComp(strFormName) {
var data = {
Company: 'Adobe Apple Microsoft'.split(" "),
City: 'London Paris Berlin'.split(" ")
};
$('#'+strFormName).autocomplete(data[strFormName]);
}
What that does is create an object (data) with two properties, City and Company. Then, when passing the array to the autocompleter, it selects the appropriate array by looking up the property by name, using [] syntax.
JavaScript is very flexible about how you access properties. For example, all of these retrieve the City property of data:
var x = data.City;
var x = data['City'];
var y = "City"; var x = data[y];
var x = data["C" + 'i' + "t" + 'y'];
You get the idea, you can either access a property by using its name literally in the code, or by indexing into the object with [] and giving the property as a string (which can be a string literal, or a string coming from a variable, or expression, or function result, or...).
I'd probably move the data stuff out of autoComp because you don't need to recreate it every time.