Пример массивов для 5 городов, разницу в размере кода видно даже на глаз...
варик от rsa97
var err = 'выберите разные города';
prices = {
khabarovsk: {
khabarovsk: err,
moscow: 1200,
spb: 1000,
rdn: 750,
smr: 888
},
moscow: {
khabarovsk: 1200,
moscow: err,
spb: 500,
rdn: 650,
smr: 777
},
spb: {
khabarowsk: 1000,
moscow: 500,
spb: err,
rdn: 550,
smr: 555,
},
rdn: {
khabarowsk: 750,
moscow: 650,
spb: 550,
rdn: err,
smr: 444
},
smr: {
khabarowsk: 750,
moscow: 650,
spb: 550,
rdn: 888,
smr: err
}
};
$( "select.city_choice" ).change(function() {
$('.final_price').html(prices[$('#city_from').val()][$('#city_to').val()]);
});
мой варик (и принцип наполнения массива видно на глаз... хотя в первом варике наверное удобнее заполнять города, если заполняет секретарша, но в случае ошибки туда или обратно будет по разной цене, в моем варике это исключено):
var err = 'выберите разные города';
altprices = [
['moscow','khabarovsk',1200],
['moscow','spb',500],
['moscow','rdn',650],
['moscow','smr',777],
['khabarovsk','spb',1000],
['khabarovsk','rdn',750],
['khabarovsk','smr',888],
['spb','rdn',550],
['spb','smr',555],
['rdn','smr',444]
];
$( "select.city_choice2" ).change(function() {
for(var i = 0; i < altprices.length;i++){
if ($('#city_from2').val() == $('#city_to2').val()) {
$('.final_price2').html(err);
return;
}
if($.inArray($('#city_from2').val(), altprices[i]) != -1 && $.inArray($('#city_to2').val(), altprices[i]) != -1){
$('.final_price2').html(altprices[i][2]);
}
}
});
https://jsfiddle.net/xpvt214o/717290/