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中枚举

下一篇: 如何缩短将数字转换为月份名称的开关大小写块?