0

次のように文字列を注文する必要があります。

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 = ミエルコール

ジュ=ジューブス

vi = ヴィエルネス

サ=サバド

do = ドミンゴ

コードを使用してどうすればよいですか?

4

1 に答える 1

3
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"] 
于 2013-08-22T21:10:57.203 に答える