我想使用javascript来验证各个国家的日期格式。当然,他们都有不同的方式来格式化他们的日期。
我想做的(但不知道如何做)是创建一个月份对象数组。每个月对象将包含一个数字(1 表示 1 月 2 表示 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' };
但我不明白为什么这是错误的。
你的代码有很多错误。首先,您通常不定义数组的长度:
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'],
...
];
首先,您可以从位置派生月份数字;您不需要存储它。 Javascript 使用 0=Jan,1=February,依此类推。 因此,如果您需要为人类显示月份数字,只需在 Javascript 数字中添加 1。
对于名称,您可以只使用按月份编号索引的数组:
var abrMonthNames = [
['Jan', 'jan', 'janv'],
...
['May', 'maj', 'mai'],
...
['Dec', 'dec', 'déc' ]
];
然后只需在abrMonthNames[monthIndex]
中查找名称或从abrMonthNames[monthIndex][languageIndex]
中获取它。
你的问题出在var months[11] = new monthObj[11];
我想你想做months[11] = new Object();
此外,您的{ 'Jan', 'Other' }
是无效对象 - 对象始终是键值对。 将其更改为[ 'Jan', 'Other']
以获得这种结构。