用于解释整个整数而不是字符的字母数字排序算法- Javascript



我需要排序一个字母数字列表,但它搞砸了多位数整数,因为它是逐字符的,而且1小于8。

任何,这是特别棘手的,因为可能有字母字符前后的数字。因此,如果它能以某种方式理解整型而不是单位数,那么就可以了。

正常排序

  1. 十年级学术
  2. 10级应用
  3. 11年级
  4. 八年级
  5. 在九年级
所需:

    八年级
  1. 在九年级
  2. 十年级学术
  3. 10级应用
  4. 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'));

最新更新