我正在尝试将许多if then语句简化为只有一个带有2个数组的if语句。
所以,如果我有这个:
if (city == 'Atlanta'){
jQuery('#cit').HTML('Atlanta');
jQuery('#pho').HTML('555-555-5555');
}
else if (city == 'Portland'){
jQuery('#cit').HTML('Portland');
jQuery('#pho').HTML('666-666-6666');
}
else if (city == 'StLouis'){
jQuery('#cit').HTML('St Louis');
jQuery('#pho').HTML('777-777-7777');
}
我正在尝试简化它,以便它只有两个或三个数组,只有一个if语句。比如[亚特兰大,波特兰,StLouis],[亚特兰大,波特兰,圣路易斯],[555-555-5555,666-666-6666,777-777-7777]这样在未来编辑会更容易,加上它没有JS知识的人可以编辑。
任何想法如何实现这样的事情?
答案 0 :(得分:9)
将数据存储在object中,其中city
为关键字,数组为值,其中包含真实姓名和电话号码:
var data = {
'Atlanta': ['Atlanta', '555-555-555'],
'Portland': ['Portland', '666-666-6666'],
'StLouis': ['St Louis', '777-777-7777'],
// ...
};
jQuery('#cit').HTML(data[city][0]);
jQuery('#pho').HTML(data[city][1]);
答案 1 :(得分:4)
使用Json存储您的数据
var cities = {
Atlanta:{name:'Atlanta',pho:'555-555-5555'},
Portland:{name:'Portland',pho:'333-333-333'}
}
然后你可以像这样获取值:
jQuery('#cit').HTML(cities['Atlanta'].name);
答案 2 :(得分:4)
创建一个对象并引用它,而不必使用循环和条件:
var cities = {
Atlanta: {
name: 'Atlanta',
phone: '555-555-5555'
},
Portland: {
name: 'Portland',
phone: '666-666-6666'
},
StLouis: {
name: 'St. Louis',
phone: '777-777-7777'
}
};
$('#cit').text(cities[city].name);
$('#pho').text(cities[city].phone);
答案 3 :(得分:1)
而不是使用if语句考虑使用像这样的开关
jQuery('#cit').HTML(city);
switch(city)
{
case"Atlanta":
jQuery('#pho').HTML('555-555-5555');
break;
case"Portland":
jQuery('#pho').HTML('666-666-6666');
break;
case"StLouis":
jQuery('#pho').HTML('777-777-7777');
break;
}
编辑人员只需添加,删除和编辑交换机中的“案例”即可。您可以在开关中拥有的案件数量没有限制。
答案 4 :(得分:1)
将城市放入一个对象文字数组中,然后您可以循环遍历数组并使用来自对象的数据填充页面元素。
var cities = [
{code: 'Atlanta', name: 'Atlanta', phone: '555-555-5555'},
{code: 'Portland', name: 'Portland', phone: '666-666-6666'},
{code: 'StLouis', name: 'St Louis', phone: '777-777-7777'},
];
for(var i = 0, l = cities.length; i < l; i++){
if(cities[i].code===city) {
jQuery('#cit').HTML(cities[i].name);
jQuery('#pho').HTML(cities[i].phone);
}
}