Javascript 月翻译对象



我想使用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']以获得这种结构。

最新更新