$("#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"]

09-11 19:11
查看更多