3

我试图将许多 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 语句。例如 [Atlanta, Portland, StLouis], [Atlanta, Portland, St Louis], [555-555-5555, 666-666-6666, 777-777-7777] 这样以后更容易编辑,加上它不熟悉 JS 的人可以编辑。

任何想法如何实现这样的事情?

4

5 回答 5

9

将数据存储在一个对象中,以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]);
于 2013-06-11T16:21:29.880 回答
4

使用Json像你一样存储你的数据

var cities = {
    Atlanta:{name:'Atlanta',pho:'555-555-5555'},
    Portland:{name:'Portland',pho:'333-333-333'}    
}

然后你可以像这样获取值:

jQuery('#cit').HTML(cities['Atlanta'].name);
于 2013-06-11T16:28:20.007 回答
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);
于 2013-06-11T16:34:00.700 回答
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;
}

编辑人员只需要在开关中添加、删除和编辑“案例”。您可以在交换机中拥有的案例数量没有限制。

于 2013-06-11T16:24:40.373 回答
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);

     }
}
于 2013-06-11T16:30:23.767 回答