Javascript月翻译对象

时间:2016-05-31 19:11:23

标签: javascript arrays object

我想使用javascript来验证各个国家/地区的日期格式。他们当然都有不同的方式来格式化他们的日期。

我想做什么(但不知道该怎么做)是创建一个月份对象数组。 每个月对象将包含一个数字(1月1日为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 个答案:

答案 0 :(得分: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 :(得分: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]中抓取该名称即可。

答案 2 :(得分:-1)

您的问题出在var months[11] = new monthObj[11];我想您要做months[11] = new Object();

此外,您的{ 'Jan', 'Other' }是无效对象 - 对象始终是键值对。将其更改为[ 'Jan', 'Other']以获得此类结构。