How to shorten switch case block converting a number to a month name?
有没有一种方法可以在较少的行上编写此代码,但仍然易于阅读?
var month = '';
switch(mm) {
case '1':
month = 'January';
break;
case '2':
month = 'February';
break;
case '3':
month = 'March';
break;
case '4':
month = 'April';
break;
case '5':
month = 'May';
break;
case '6':
month = 'June';
break;
case '7':
month = 'July';
break;
case '8':
month = 'August';
break;
case '9':
month = 'September';
break;
case '10':
month = 'October';
break;
case '11':
month = 'November';
break;
case '12':
month = 'December';
break;
}
定义一个数组,然后通过索引获取。
var months = ['January', 'February', ...];
var month = months[mm - 1] || '';
what about not to use array at all :)
var objDate = new Date("10/11/2009"),
locale = "en-us",
month = objDate.toLocaleString(locale, { month: "long" });
console.log(month);
// or if you want the shorter date: (also possible to use "narrow" for "O"
console.log(objDate.toLocaleString(locale, { month: "short" }));
as per this answer Get month name from Date from David Storey
Try this:
var months = {'1': 'January', '2': 'February'}; //etc
var month = months[mm];
Note that mm
can be an integer or a string and it will still work.
If you want non-existing keys to result in empty string ''
(instead of undefined
), then add this line:
month = (month == undefined) ? '' : month;
JSFiddle.
链接地址: http://www.djcxy.com/p/91758.html上一篇: 使用ES6在JavaScript中枚举