2011-01-26 140 views
2
function month(num) { 
    if (num == 1) { 
     return "January"; 
    } else if (num == 2) { 
     return "Feburary"; 
    } else if (num == 3) { 
     return "March"; 
    } else if (num == 4) { 
     return "April"; 
    } else if (num == 5) { 
     return "May"; 
    } else if (num == 6) { 
     return "June"; 
    } else if (num == 7) { 
     return "July"; 
    } else if (num == 8) { 
     return "August"; 
    } else if (num == 9) { 
     return "September"; 
    } else if (num == 10) { 
     return "October"; 
    } else if (num == 11) { 
     return "November"; 
    } else if (num == 12) { 
     return "December"; 
    } else { 
     return false; 
    } 
} 

jQuery/Javascript。有沒有更有效的方法來編寫這個功能?

+1

順便說一句,你拼錯的「二月」! – david 2011-01-26 02:42:38

+0

@david - 哈哈,我複製它。大聲笑。 – Reigel 2011-01-26 02:45:29

+0

哈哈哈,謝謝。深夜錯誤。 – switz 2011-01-26 02:53:12

回答

12

是的,使用月份編號作爲字符串數組(索引名稱)。

4
function month(num) { 
    if (num < 1 || num > 12) { return false; } 
    var months = ["January","Feburary","March","April","May","June","July","August","September","October","November","December"]; 

    return months[num-1] 

} 
3
var month = function(n){ 
    return ["January", "February", "March", 
     "April", "May", "June", "July", 
     "August", "September", "October", 
     "November", "December"][n-1]||false; 
}; 
alert(month(3)); 

下面是如何使用模塊模式(因爲這是所有時尚的年輕人做的這些天)做一個例子:

var MonthModule = (function(){ 
    var MonthsArray = [ 
     "January", "February", "March", 
     "April", "May", "June", "July", 
     "August", "September", "October", 
     "November", "December"  
    ]; 
    var MonthsEnum = { 
     "January" : 1, "February" : 2, "March" : 3, 
     "April" : 4, "May" : 5, "June" : 6, 
     "July" : 7, "August" : 8, "September" : 9, 
     "October" : 10, "November" : 11, "December" : 12 
    }; 

    var getMonthFromNumber = function(n){ 
     return MonthsArray[n-1]||false; 
    }; 

    var getMonthFromName = function(s){ 
     return MonthsEnum[s]||false; 
    }; 

    return { 
     getMonthFromNumber : getMonthFromNumber, 
     getMonthFromName : getMonthFromName 
    }; 
}()); 

alert(MonthModule.getMonthFromNumber(5)); 
alert(MonthModule.getMonthFromName("February")); 
4

或者,你可以做到這一點的錯誤的方法:

function month(num) { 
    return new Date(0,num-1).toLocaleDateString().split(" ")[1]; 
} 

看看它有多短! :)

唉,這是一個很好的機會,將在各種瀏覽器和國家中打破。或者,它可能會自動爲您翻譯月份名稱。

無論如何,不​​要這樣做。

不客氣。

1

我有一段時間沒有碰過Javascript,所以語法可能很糟糕,但我很肯定這應該起作用。直接

my.namespace.MonthEnum = { 
    JANUARY : { value: 1, name: "January" }, 
    FEBRUARY : { value: 2, name: "February" }, 
    MARCH  : { value: 3, name: "March" }, 
    APRIL  : { value: 4, name: "April" }, 
    MAY  : { value: 5, name: "May" }, 
    JUNE  : { value: 6, name: "June" }, 
    JULY  : { value: 7, name: "July" }, 
    AUGUST : { value: 8, name: "August" }, 
    SEPTEMBER : { value: 9, name: "September" }, 
    OCTOBER : { value: 10, name: "October" }, 
    NOVEMBER : { value: 11, name: "November" }, 
    DECEMBER : { value: 12, name: "December" }, 
} 

function month(num) { 
    var months = my.namespace.MonthEnum; 
    for (var month in months) { 
     if (month.value == num) 
      return month.name; 
    } 

    return false; 
} 
0

所有答案/間接暗示1個解決方案 - 「HASH」

你需要建立一個 「HASH」。

相關問題