Ваша проблема возникает из-за того, что вы назначаете this.cityArray
несколько раз. Причина, по которой «Кувейт» работает правильно, заключается в том, что он последний в списке.
Учитывайте, когда вы выбираете «Бахрейн»:
#1 this.cityArray = ((country == "Bahrain" || country == "البحرين") && this.lang=="en")?this.bahrain_cities_en:this.bahrain_cities_ar;
#2 this.cityArray = ((country == "Oman" || country == "عمان") && this.lang=="en")?this.oman_cities_en:this.oman_cities_ar;
#3 this.cityArray = ((country == "Qatar" || country == "قطر") && this.lang=="en")?this.qatar_cities_en:this.qatar_cities_ar;
#4 this.cityArray = ((country == "Saudi Arabia" || country == "المملكة العربية السعودية") && this.lang=="en")?this.ksa_cities_en:this.ksa_cities_ar;
#5 this.cityArray = ((country == "UAE" || country == "الامارات العربية المتحدة") && this.lang=="en")?this.uae_cities_en:this.uae_cities_ar;
#6 this.cityArray = ((country == "Kuwait" || country == "الكويت") && this.lang=="en")?this.kuwait_cities_en:this.kuwait_cities_ar;
Строка # 1 правильно устанавливает this.cityArray = this.bahrain_cities_er
, потому что ваше условие (country == "Bahrain"
оценивается как true
И this.lang
установлено в "en" ... ХОРОШО
Но ... Строка # 2, (country == "Oman" || country == "عمان")
оценивается как false
, поэтому вы переназначаете значение this.cityArray
= this.oman_cities_ar
То же самое относится и к строке № 3- № 6, поэтому последняя строка присваивает ее this.kuwait_cities_ar
, как вы уже видели.
Возможно, оператор switch
сработает лучше, когда будет выполнен только один раз.
Однако ваш подход очень сложный. Вы можете структурировать свои определения названий стран / городов в виде вложенного массива или карты, чтобы вы могли просто «искать» правильный список, а не «выяснять его» на основе выбранного значения. Вы также можете создать два отдельных списка, по одному для каждого языка, а затем просто поменять их местами на основе текущего языка.