我需要排序一个字母数字列表,但它搞砸了多位数整数,因为它是逐字符的,而且1小于8。
任何,这是特别棘手的,因为可能有字母字符前后的数字。因此,如果它能以某种方式理解整型而不是单位数,那么就可以了。
正常排序
- 十年级学术
- 10级应用
- 11年级 八年级在九年级
- 八年级在九年级
- 十年级学术
- 10级应用
- 11年级
谁知道如何使一个Javascript脚本排序这种方式?如果你有一个AngularJS的解决方案就更好了,因为我正在使用它。
对于您提供的任何帮助,事先表示感谢
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'));