我有两个变量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;
}
答案 0 :(得分:1)
使用一个对象,该对象的键是一整天,而值是缩写形式。然后,要确定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%的时间比switch
更好的选择对象。
答案 1 :(得分:1)
(假设tur
是一个错字),您所有的日子只是前三个字母的小写字母:
因此您可以使用:
let day = clickDay.slice(0,3).toLowerCase()
并完成它。假设您知道clickDay
是一周中的有效日期。
let days = [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
]
days.forEach(clickDay => console.log(clickDay.slice(0,3).toLowerCase()))
答案 2 :(得分:0)
要将其简化为一个开关,请使用一个功能。发送clickDay
或clickDay1
作为参数,并期望返回结果。
function abreviate(day) {
switch (day) {
case 'monday':
return 'mon';
case 'Tuesday':
return 'tue';
case 'Wednesday':
return 'wed';
case 'Thursday':
return 'tur';
case 'Friday':
return 'fri';
}
}
let day = abreviate(clickDay);
let day1 = abreviate(clickDay1);
请考虑switch语句没有default
。如果未返回任何其他内容,则会导致undefined
。