2016-05-31 57 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]抓住它。