1

我有一个for循环来遍历数组并显示日期。我编写了一些代码来将月份从数字转换为文本。代码如下所示:

for (var i=0; i < arrayLength; i++) {
  //==== MONTH DATA
  var month = data[1];

  //==== DECLARE MONTH
  if (month == '01') { var month = "Jan" }
  if (month == '02') { var month = "Feb" }
  if (month == '03') { var month = "Mar" }
  if (month == '04') { var month = "Apr" }
  if (month == '05') { var month = "May" }
  if (month == '06') { var month = "June" }
  if (month == '07') { var month = "July" }
  if (month == '08') { var month = "Aug" }
  if (month == '09') { var month = "Sept" }
  if (month == '10') { var month = "Oct" }
  if (month == '11') { var month = "Nov" }
  if (month == '12') { var month = "Dec" }

  alert(month);
}

现在我想在整个网站的各种 for 循环中使用月份转换器。所以我想做一些事情,比如把它放在一个我每次都可以触发的函数中。例如:

function declareMonth(){
  //==== DECLARE MONTH
  if (month == '01') { var month = "Jan" }
  if (month == '02') { var month = "Feb" }
  if (month == '03') { var month = "Mar" }
  if (month == '04') { var month = "Apr" }
  if (month == '05') { var month = "May" }
  if (month == '06') { var month = "June" }
  if (month == '07') { var month = "July" }
  if (month == '08') { var month = "Aug" }
  if (month == '09') { var month = "Sept" }
  if (month == '10') { var month = "Oct" }
  if (month == '11') { var month = "Nov" }
  if (month == '12') { var month = "Dec" }
}

for (var i=0; i < arrayLength; i++) {
  //==== MONTH DATA
  var month = data[1];

  declareMonth();

  alert(month);
}

然而,这不起作用。谁能解释如何做到这一点?

4

2 回答 2

3

您需要返回月份值。您还需要正确编写函数:

function getMonthName(n) {
    var months = ["Jan", "Feb", ... ];  // omitted for brevity
    return months[n - 1];
}

用法:

for (var i=0; i < arrayLength; i++) {
  var month = data[1];
  var name = getMonthName(month);
  alert(name);
}

注意:结果将是undefined如果提供的月份超出范围。

于 2013-05-12T12:51:12.367 回答
1

作为一个类比,你的功能是在正确的轨道上,但是 javascript 有一些更简单的方法可以用更少的代码来做你所做的事情。

使用哈希

如果我们以if上面的示例为例,我们可以将其转换为哈希和简单函数:

var monthName = function( num ){
  var months = {
    '01':'Jan', '02':'Feb',
    '03':'Mar', '04':'Apr',
    '05':'May', '06':'Jun',
    '07':'Jul', '08':'Aug',
    '09':'Sep', '10':'Oct',
    '11':'Nov', '12':'Dec'
  };

  return months[ num ];
};

该方案要求num函数接受的参数是字符串。

Heres a demo

使用数组

如果您使用数字调用您的月份,请使用数组:

var monthName = function( num ){
  var months = [
    'Jan', 'Feb', 'Mar', 'Apr',
    'May', 'Jun', 'Jul', 'Aug',
    'Sep', 'Oct', 'Nov', 'Dec'
  ];

  return months[ num - 1 ];
};

Heres a demo

于 2013-05-12T13:31:46.817 回答