如何将数组中的所有数字转换为相应的月份?

时间:2014-04-02 09:50:28

标签: javascript jquery arrays

我有一个数组:months由数字填充。我试图覆盖这个数组的内容,交换相应月份的数字。所以1变成Januari,2变成Februari等等。 这些数字总是按照正确的顺序排列,但可能包含一整年的几个循环,有时也不会在Januari aka 1开始。

我尝试用相应的月份替换索引,但这不是一个干净的解决方案,而且,它只替换它找到的第一个条目。

months[months.indexOf(1)] = 'Januari';
months[months.indexOf(2)] = 'Februari';
months[months.indexOf(3)] = 'Maart';
months[months.indexOf(4)] = 'April';
months[months.indexOf(5)] = 'Mei';
months[months.indexOf(6)] = 'Juni';
months[months.indexOf(7)] = 'Juli';
months[months.indexOf(8)] = 'Augustus';
months[months.indexOf(9)] = 'September';
months[months.indexOf(10)] = 'Oktober';
months[months.indexOf(11)] = 'November';
months[months.indexOf(12)] = 'December';

用相应的月份替换数组中所有数字的干净溶剂是什么?

http://jsfiddle.net/es4rQ/

4 个答案:

答案 0 :(得分:1)

使用lookup-and-replace的简单循环将执行:

var monthNames = ['Januari', 'Februari', ... ];
for (var i = 0; i < months.length; ++i) {
    months[i] = monthNames[months[i] - 1];
}

答案 1 :(得分:1)

map可能派上用场:

JSFiddle:http://jsfiddle.net/B2k5A/1/

var monthsArray = [1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12];

var MONTHS = {
    1: 'Januari',
    2: 'Februari',
    3: 'Maart',
    4: 'April',
    5: 'Mei',
    6: 'Juni',
    7: 'Juli',
    8: 'Augustus',
    9: 'September',
    10: 'Oktober',
    11: 'November',
    12: 'December'
}

output = monthsArray.map(function(i){
   return MONTHS[i];
});

$("#months").html(output);

我创建了一个存储月份名称的对象。 map将通过循环输入monthsArray来返回数组,对于monthsArray中的每个项目,它将返回MONTHS中定义的月份的相应名称对象

答案 2 :(得分:1)

简单的解决方案是here

var months = [1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12];
var results = []
var month = []
month[0]="January";
month[1]="February";
month[2]="March";
month[3]="April";
month[4]="May";
month[5]="June";
month[6]="July";
month[7]="August";
month[8]="September";
month[9]="October";
month[10]="November";
month[11]="December";


months.forEach(function(n) {
    results.push (month[n-1])
});

$("#months").html(results.join(' '));

答案 3 :(得分:1)

切片方法可以删除元素或用其他元素替换它。你必须这样做12次。可能有更好的解决方案,但这是我的2美分。

var months= [1,2,3,4,5,6,7,8,9,10,11,12];
var theMonths = ["Jan","Feb","March","April","May","June","July","Aug",
"Septem","Oct","Nov","Dec"];

months.splice(months.indexOf(1),1,theMonths [0]);