$("#show_times_available_" + pos).find("td span").parent().each(function(){
array.push($(this).attr("id"));
array = array.sort();
});
我的数组接收所有元素并获取其ID并将其推入数组,这样我的数组最终将为:
[ "mon_0600-0", "sun_0700-0", "thu_0600-0", "thu_0700-0", "tue_0300-0", "wed_0700-0" ];
我想做的是每次将新元素推入数组时,将这些元素排序为(mon,tue,wed等)。这样我的数组最终将成为:
[ "mon_0600-0", "tue_0300-0", "wed_0700-0", "thu_0600-0", "thu_0700-0", "sun_0700-0" ];
使用基本的
sort()
函数将按字母顺序放置,并且我知道sort()
函数可以采用另一个函数。我只是不确定如何在普通javascript或jQuery中进行设置。是否有CASE THEN或使用when()
和then()
对它们进行排序的方法?我已经在Google和SO周围搜索了,但是什么也没有。 最佳答案
在这里,您可以使用自定义排序功能
// your array
array = [ "mon_0600-0", "sun_0700-0", "thu_0600-0", "thu_0700-0", "tue_0300-0", "wed_0700-0" ];
// the order stored in an object
daynames={
mon:1,
tue:2,
wed:3,
thu:4,
fri:5,
sat:6,
sun:7
}
// the custom sort function which gets the value for the dayname-key and compares
function SortByDayName(a, b){
// get the value of dayname + the time
var aName = daynames[a.substr(0,3)] + a.substr(4,7);;
var bName = daynames[b.substr(0,3)] + b.substr(4,7);;
return ((aName < bName) ? -1 : ((aName > bName) ? 1 : 0));
}
// apply sort
array.sort(SortByDayName);
// output:
["mon_0600-0", "tue_0300-0", "wed_0700-0", "thu_0600-0", "thu_0700-0", "sun_0700-0"]