冷凝类似的IF语句

时间:2017-08-02 03:48:03

标签: javascript jquery if-statement

我知道必须有一个比这更好的方法:

if (mon_open_close_hours=='12:00-12:00'){
    mon_open_close_hours='24hrs';
}
if (tue_open_close_hours=='12:00-12:00'){
    tue_open_close_hours='24hrs';
}
if (wed_open_close_hours=='12:00-12:00'){
    wed_open_close_hours='24hrs';
}
if (thu_open_close_hours=='12:00-12:00'){
    thu_open_close_hours='24hrs';
}
if (fri_open_close_hours=='12:00-12:00'){
    fri_open_close_hours='24hrs';
}
if (sat_open_close_hours=='12:00-12:00'){
    sat_open_close_hours=['24hrs'];
}
if (sun_open_close_hours=='12:00-12:00'){
    sun_open_close_hours=['24hrs'];
}

有没有办法以某种方式压缩这个?

我已经尝试了这一点,但它会为所有内容返回'12:00-12:00'

var $variables = [mon_open_close_hours,tue_open_close_hours,wed_open_close_hours,thu_open_close_hours,fri_open_close_hours,sat_open_close_hours,sun_open_close_hours];
     $variables.map(function(val) {
        if(val=='12:00-12:00'){
            val=['24hrs'];
        }
    })

2 个答案:

答案 0 :(得分:4)

如果您真的想要改进它,您必须改变存储和处理数据的方式。这可能需要更改DOM的使用方式以及与后端的交互方式。但它肯定比每天有7个不同的变量更好。



var open_close_hours = {};
var days = ["mon","tue","wed", "thu", "fri", "sat", "sun"];

// Some code that sets the properties.
// ...

// Conditions.

days.forEach(function(day){
  if(open_close_hours[day] == '12:00-12:00') {
    open_close_hours[day] = ['24hrs'];
  }
});




答案 1 :(得分:2)

正如我已经说过的,最好将平开时间存储在工作日的数组中,而不是存储在单独的变量中。在这种情况下,您将能够使用for循环对它们进行操作。

但是,如果我们专门讨论您的案例,那么您会错误地使用Array.prototype.map 映射函数应返回值,在本地范围内重新分配对其参数的引用不会影响任何内容。
此外,map不会更改原始数组,而是返回一个新数组,因此您需要将此结果分配给新变量或原始变量。

使用此:



var openCloseHours = [
  "09:00-15:00", 
  "09:00-18:00", 
  "09:00-18:00", 
  "09:00-18:00", 
  "09:00-18:00", 
  "12:00-12:00", 
  "12:00-12:00"
];

openCloseHours = openCloseHours.map(function(val) {
  if (val == '12:00-12:00'){
    return ['24hrs'];
  }

  return val;
});

console.log(openCloseHours);