var arr = [
"Grade 10 Applied",
"Grade 10 Academic",
"Grade 11",
"Grade 11 Testy",
"Grade 9",
"Grade 8"
];
alert(arr.sort(function(a, b) {
// split the strings into arrays of words
var aParts = a.split(' ');
var bParts = b.split(' ');
// compare the corresponding words, if they are integers parseInt first
for(var i=0; i < Math.min(aParts.length, bParts.length); i++) {
var aPart = /\d+/.test(aParts[i]) ? parseInt(aParts[i]) : aParts[i];
var bPart = /\d+/.test(bParts[i]) ? parseInt(bParts[i]) : bParts[i];
if(aPart === bPart) { continue; }
return aPart < bPart ? -1 : 1;
}
// fall back to using the array's length
// ["dog", "cat"] < ["dog", "cat", "frog"]
return aParts.length - bParts.length
}).join('\n'));
你做了什麼努力? –
您需要提供某種嘗試,以便我們提供幫助。通常的做法是通過用零填充來使所有數字固定寬度。那時,一個標準的alphanum類將按預期工作。 – CollinD
@ DanielA.White他寫過這樣一個問題:D – Vidul