我有两个变量clickDay和clickDay1,如果我用两个开关语法编写代码,则可以正常工作。但是我不知道如何简化为一种开关语法。
这是我的原始代码
let day;
let day1;
switch (clickDay) {
case 'monday':
day = 'mon';
break;
case 'Tuesday':
day = 'tue';
break;
case 'Wednesday':
day = 'wed';
break;
case 'Thursday':
day = 'tur';
break;
case 'Friday':
day = 'fri';
break;
}
switch (clickDay1) {
case 'monday':
day = 'mon';
break;
case 'Tuesday':
day = 'tue';
break;
case 'Wednesday':
day = 'wed';
break;
case 'Thursday':
day = 'tur';
break;
case 'Friday':
day = 'fri';
break;
}
最佳答案
使用键为一整天且值是缩写版本的对象。然后,要确定day
和day1
,只需在对象上查找clickDay
或clickDay1
:
const days = {
monday: 'mon', // should the "m" be capitalized?
Tuesday: 'tue',
Wednesday: 'wed',
Thursday: 'tur', // should this be `thu`?
Friday: 'fri',
};
const day = days[clickDay];
const day1 = days[clickDay1];
请注意,如果
undefined
或day
变量在对象中不包含全天名称之一,则会将day1
分配给clickDay
或clickDay1
。如果出于某种原因(不推荐)必须使用冗长的
switch
语句(不建议使用),则必须将其放入函数中:function getDay(fullDay) {
let day;
switch (fullDay) {
case 'monday':
day = 'mon';
break;
case 'Tuesday':
day = 'tue';
break;
case 'Wednesday':
day = 'wed';
break;
case 'Thursday':
day = 'tur';
break;
case 'Friday':
day = 'fri';
break;
}
return day;
}
const day = getDay(clickDay);
const day1 = getDay(clickDay1);
但是与99%的时间相比,对象是一个更好的选择。