我需要订购一个字符串,如下所示:
lu9,ma9,mi9,do9,lu10,ma10,mi10,lu11,ma11,mi11
为此,我有以下代码:
var hours = "lu9,lu10,lu11,ma9,ma10,ma11,mi9,mi10,mi11,do9";
myExit = hours.split(',').sort(function (a, b) {
var reg = /\d+/;
var num = 2 * (+(0 + a.match(reg)) - +(0 + b.match(reg)));
var str = a > b ? 1 : a < b ? -1 : 0;
return num + str;
});
alert(myExit);
该代码可以正常工作,但是问题在于字符串按字母顺序排序:
do9,lu9,ma9,mi9,lu10,ma10,mi10,lu11,ma11,mi11
“ do9”应该是最后一个,因此:
lu9,ma9,mi9,do9 ...
想法是根据西班牙语中的星期几对该变量进行排序:
lu =月球
ma =貂
mi = miercoles
ju =七夕
vi = viernes
sa =萨巴多
做=多明哥
如何使用我的代码?
最佳答案
var hours = "lu9,lu10,lu11,ma9,ma10,ma11,mi9,mi10,mi11,do9";
var arrIndex = {'lu' : 1,'ma':2,'mi':3,'ju':4,'vi':5,'sa':6,'do':7};
myExit = hours.split(',').sort(function (a, b) {
var reg = /\d+/;
var num = a.match(reg) - b.match(reg);
var strreg = /[a-zA-Z]*/;
var str = arrIndex[a.match(strreg)[0]] - arrIndex [ b.match(strreg)[0]];
return num * 20 + str;
});
alert(myExit);
console.log(myExit);
输出为:
["lu9", "ma9", "mi9", "do9", "lu10", "ma10", "mi10", "lu11", "ma11", "mi11"]