【问题标题】:Function that returns either day or number depending on parameter - Javascript根据参数返回日期或数字的函数 - Javascript
【发布时间】:2017-02-04 12:54:32
【问题描述】:

我需要一个函数,它在您发送一天(例如“friday”)时返回一个数字,并在您发送一个数字时返回一天(例如“06”)。该函数应获取包含数字或日期字符串的参数。我试着做一个开关,但它似乎不起作用。

function dayPick(day) {

    let value;

    switch (day) {
        case "friday" || "05":
            if (day === "friday") {
                value = "05";
            } else {
                value = "friday"
            }

            break;
        case "saturday" || "06":
            if (day === "saturday") {
                value = "06";
            } else {
                value = "saturday";
            }

            break;
        case "sunday" || "07":
            if (day === "sunday") {
                value = "07";
            } else {
                value = "sunday";
            }

            break;
    }

    return value;
}

有什么建议吗?

【问题讨论】:

  • 检查一次输入是"friday"还是"05"有点多余,然后还要检查返回两个完全不同的东西是哪个。相反,您可能应该将 case "friday"case "05" 作为单独的东西。如果你也将逻辑分离到不同的函数中可能会更好 - 有一个给出截然不同的结果有点奇怪。

标签: javascript function switch-statement


【解决方案1】:

这样的方法怎么样?

function dayPick(day) {
    var days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];
    if (isNaN(day)) {
        // Day is literal
        return days.indexOf(day) + 1;
    } else {
        // Day is numeric
        return days[day-1];
    }
}

【讨论】:

    【解决方案2】:

    function getDay(dayOrNum) {
      const week = ['mon', 'tue', 'wed','thur','fri','sat','sun'];
      
    if (typeof dayOrNum === 'number') {
      return week[dayOrNum - 1];
    } else {
      return week.indexOf(dayOrNum) + 1;
    }
    }
    
    console.log(getDay(1)); // output 'mon'
    console.log(getDay('mon')); //output 1

    【讨论】:

      【解决方案3】:

      基本上你检查这个

      if (day === ("friday" || "05")) {}
      

      它只检查字符串'friday',因为'friday' 是一个真值并且检查是严格相等的。

      最好使用检查一个值,像这样

      switch (day) {
          case "friday":
              value = "05";
              break;
          case "05":
              value = "friday";
              break;
          case "saturday":
              value = "06";
              break;
          case "06":
              value = "saturday";
              break;
          case "sunday":
              value = "07";
              break;
          case "07":
              value = "sunday";
              break;
      }
      

      或者一个对象,比如

      var values = { 
          friday: "05",
          "05": "friday",
          saturday: "06",
          "06": "saturday",
          sunday: "07",
          "07": "sunday"
      };
      

      用法

      value = values[day];
      

      【讨论】:

        猜你喜欢
        • 2019-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-09
        • 1970-01-01
        相关资源
        最近更新 更多