Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
57 views
in Technique[技术] by (71.8m points)

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.");
}
question from:https://stackoverflow.com/questions/65648953/the-simultaneous-criteria-in-javascript-switch

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...