У меня есть массив строк, которые состоят из необязательного двубуквенным строки, обозначающие весной или осенью, после чего четыре цифры года, то есть в качестве одного из следующих примеров:Javascript сортировать по по части строки
var example_data = ["HT2014", "VT2013", "2017"];
Я хотел бы отсортировать этот массив так, чтобы он сортировался в основном по году (т. Е. Четыре цифры, как числа), а затем (если годы равны), он сортируется так, что VT является первым, HT находится в середина и записи, которые не указывают весну или осень, являются последними.
Если я понял, функция JavaScript sort()
правильно, я должен быть в состоянии осуществить sortFunction
, который говорит мне, какой из двух объектов должен быть первым, а затем просто сделать вызов data.sort(sortFunction)
.
Я также начал работать над такой sortFunction
и придумал следующее:
function specialSort(a,b) {
var as = a.split("T");
var bs = b.split("T");
if (as[1] != bs[1]) {
return as[1] - bs[1];
} else {
// The year is equal.
// How do I sort on term?
}
}
Как означают комментарии, я не имею ни малейшего понятия о том, что нужно сделать, чтобы получить сортировку по "HT"
, "VT"
и ""
правильный (за исключением, может быть, смешной серии вложенных if
s ...). (Кроме того, я знаю, что приведенный выше код будет терпеть неудачу для третьего элемента в примерных данных, так как "2017.split("T")
будет иметь только 1 элемент. Я разберусь с этим ...)
Является ли это хороший подход? Если да - как мне выполнить функцию, чтобы делать то, что я хочу? Если нет - что мне делать вместо этого?