我有一个数组: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';
用相应的月份替换数组中所有数字的干净溶剂是什么?
答案 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]);