javascript - 如何减少 switch 语法的迭代

标签 javascript switch-statement

我有两个变量 clickDay 和 clickDay1,如果我用两个 switch 语法编写代码,它可以正常工作。但我不知道如何减少到一种 switch 语法。

这是我的原始代码

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

请注意,如果 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% 的情况下,对象是比 switch 更好的选择。

关于javascript - 如何减少 switch 语法的迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53799528/

相关文章:

vue.js - Nuxt 按按钮切换布局

javascript - 如何在不取消绑定(bind)事件的情况下分离然后重新附加 Backbone.View?

javascript - 有没有办法排除规则而不影响我的 jQuery?

php - PHP 和 JavaScript 中的全局变量

swift - 这段 Swift 代码中发生了什么

Java应用程序提供不同选项的菜单吗?

javascript - 错误缺少 } 且返回后无法到达中断

javascript - Angular.js ng-repeat 回调

javascript - 在 chart.js 折线图上使 x 轴上的月份可点击

ios - 让警告在嵌套的CloudKit查询中使var永不更改