Мне интересно, что вы прочитали, что заставило вас поверить, что написав то, что вы сделали, вы волшебным образом получили бы объект с одним массивом со значениями от второго ...
По сути, что происходит, когдавы сделали, когда вы
var city = {
_country : _city
};
создали объект, который выглядит как
var city = {
'_country' : ['your', 'array', 'of', 'cities']
};
, то есть объект с одним ключом, '_country'
, сопоставленный с массивом городов.
Это объясняет, почему вы получаете неопределенное ... city['any string that isn't exactly " _country"'] == undefined
Скорее всего, то, что вы хотите сделать,
var city = _country.reduce(function(acc, cur, idx) { acc[cur] = _city[idx]; return acc; }, {});