2016-05-31 58 views
1

我想使用JavaScript來驗證各個國家的日期格式。他們當然有不同的方式來格式化他們的日期。Javascript月翻譯對象

我想要做什麼(但不知道該怎麼做)是創建一個月份對象數組。 每個月的對象都會包含一個數字(一月份的2代表二月份等)和一個字符串數組以便翻譯月份(例如可能是{'May' 'Maj' ,Mai'}這樣我每個月會有一個12個對象,任何人都可以告訴我如何製作這個數組對象。

我已經試過

var monthObj = new Object(), 
    abrMon, 
    number; 

var months[11] = new monthObj[11]; 
months[0].num = 1; 
months[0].abrMon = { 'Jan', 'Other' }; 

,但我不明白爲什麼這是錯的。

回答

3

有這麼多你的代碼錯誤。首先,你通常不會定義長度對於陣列:

var months[11] = new ...; 

我常說,因爲你可以創建數組預定長度:

var months = new Array(12); // Please do *not* use 

應該寫成

var months = []; // array 

new Object()是不是真的用了,改用:

var a = {} // object 

數組寫成[ 1, 2, 3 ]而不是{ 1, 2, 3 }

可以綁在一起,這:

var months = []; // array 
months[0] = {}; // object 
months[0].num = 1; 
months[0].abrMon = ['Jan', 'Other']; 

而且好像你將與一個二維數組罰款:

var months = [ 
    ['Jan', 'Jen', 'Janu'], 
    ['Feb', 'Fbr', 'Fyb'], 
    ... 
]; 
-1

你的問題是var months[11] = new monthObj[11];我想你想在做months[11] = new Object();

此外,您的{ 'Jan', 'Other' }是一個無效的對象 - 對象始終是鍵值對。將其更改爲[ 'Jan', 'Other']以獲得這種結構。

+0

烏普斯,我的壞。現在修復。它仍然很古怪。 – Russbear

+1

從OP的代碼看來,似乎並沒有定義'months','months [11]'會拋出ReferenceError – andlrc

+1

OP的印象是'var months [11]'是*聲明數組的方式大小爲11(這也是一個錯誤,因爲它需要大小爲12,以保持索引0到11處的對象)。 –

0

首先,您可以從位置導出月份編號;你不需要存儲它。 Javascript使用0 = 1月,1 = 2月等。因此,如果您需要顯示人類的月份編號,只需在Javascript編號中加1。

對於名稱,你可以只使用按月數量索引的數組:

var abrMonthNames = [ 
    ['Jan', 'jan', 'janv'], 
    ... 
    ['May', 'maj', 'mai'], 
    ... 
    ['Dec', 'dec', 'déc' ] 
]; 

然後,只需查找名稱abrMonthNames[monthIndex]abrMonthNames[monthIndex][languageIndex]抓住它。