我有两个变量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;
        }

最佳答案

使用键为一整天且值是缩写版本的对象。然后,要确定dayday1,只需在对象上查找clickDayclickDay1

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];


请注意,如果undefinedday变量在对象中不包含全天名称之一,则会将day1分配给clickDayclickDay1

如果出于某种原因(不推荐)必须使用冗长的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%的时间相比,对象是一个更好的选择。

07-27 13:34