我想对包含“ Spring 2008”,“ Spring 2009”等的数组进行排序。
我知道如何在python中做it。反正用JavaScript可以做到吗?
l = ['Fall 2014', 'Spring 2015', 'Fall 2008', 'Spring 2008', 'Summer 2008', 'Winter 2008']
def key(x):
seas, year = x.split()
return -int(year), seas != "Fall", seas != "Summer"
l.sort(key=key)
l.reverse()
print(l)
# OUTPUT : ['Winter 2008', 'Spring 2008', 'Summer 2008', 'Fall 2008', 'Fall 2014', 'Spring 2015']
答案 0 :(得分:1)
您可以拆分字符串并从对象中获取几个月的值。
var months = { Spring: 1, Summer: 2, Fall: 3, Winter: 4 },
data = ['Fall 2014', 'Spring 2015', 'Fall 2008', 'Spring 2008', 'Summer 2008', 'Winter 2008'];
data.sort((a, b) => {
var aa = a.split(' '),
bb = b.split(' ');
return aa[1] - bb[1] || months[aa[0]] - months[bb[0]];
});
console.log(data);
答案 1 :(得分:1)
如果我们假设“ Winer”总是在“ Summer”之前,尽管在2008年6月1日和2008年12月1日可能相反,那么我将执行以下操作:
const src = ['Fall 2014', 'Spring 2015', 'Fall 2008', 'Spring 2008', 'Summer 2008', 'Winter 2008'];
const seasonToNum = str => ([season, year] = str.split(' '), year+(['Winter', 'Spring', 'Summer', 'Fall'].indexOf(season)+1)/4);
const res = src.sort((a,b) => seasonToNum(a) - seasonToNum(b));
console.log(res);