排序月份(带字符串)算法

Osc*_*Ryz 6 language-agnostic sorting string-comparison

我有这个月数组:

["January", "March", "December" , "October" ]
Run Code Online (Sandbox Code Playgroud)

我希望它像这样排序:

["January", "March", "October", "December" ] 
Run Code Online (Sandbox Code Playgroud)

我正在考虑一个"if/else"可怕的级联,但我想知道是否还有其他方法可以做到这一点.

坏的部分是我只需要用"string"(也就是说,不使用Date对象或类似的东西)来做这个

什么是好方法?

Fab*_*eeg 11

如果我有办法提供自定义排序顺序,我会创建一个定义正确顺序的列表:

correct = List("January", "February", "March", ...)
Run Code Online (Sandbox Code Playgroud)

然后按该列表中的位置排序,例如:

toSort.sort(a, b) => compare(correct.index(a), correct.index(b))
Run Code Online (Sandbox Code Playgroud)


jsp*_*cal 9

使用name-> index创建一个表,然后根据表中的值对数组进行排序.

在C#arr.sort(myCompare),Java Collections.sort(arr, myCompare),Python arr.sort(myCompare),PHP usort($arr, 'myCompare'),C++中,有几个例子可能很有用sort(vec.begin(), vec.end(), myCompare).