Search code examples
javascriptswitch-statementcriteria

The simultaneous criteria in JavaScript switch


Instead of writing like "28 or 29 days", how can we add also the leap-year check to switch, to get 29 days for the year 2000?

var month = "Feb";
var year = 2000;
switch(month) {
    case "Apr": case "Jun": case "Sep": case "Nov":
    console.log("30 days."); break;
case "Feb":
    console.log("28 or 29 days."); break;
default: console.log("31 days.");
}

Solution

  • Hope this helps you. Code should be self explanatory. Please let me know.

    function isLeapYear(year) {
      return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
    }
    
    function getMonthLength(month, year) {
      switch(month) {
        case "Apr": case "Jun": case "Sep": case "Nov":
          return 30;
        case "Feb":
          return isLeapYear(year) ? 29 : 28;
        default:
          return 31;
      }
    }
    
    console.log(getMonthLength('Feb', 2000));
    console.log(getMonthLength('Jan', 2001));
    console.log(getMonthLength('Feb', 2001));
    console.log(getMonthLength('Sep', 2001));