我知道必须有一个比这更好的方法:
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'];
}
})
答案 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);