首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解释整整数而不是字符的字母数字排序算法- Javascript

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

Stack Overflow用户
提问于 2015-09-04 18:56:54
回答 1查看 591关注 0票数 0

我需要对一个字母数字列表进行排序,但由于它是逐个字符排列的,并且1小于8,所以它在处理多位整数。

任何情况下,这都是特别棘手的,因为数字前后都可以有字母字符。因此,如果它能以某种方式理解完整的整数,而不仅仅是个位数,那么就可以做到了。

正规排序

  1. 10级学术
  2. 10年级应用
  3. 11年级
  4. 八年级
  5. 9年级

所需的排序:

  1. 八年级
  2. 9年级
  3. 10级学术
  4. 10年级应用
  5. 11年级

有人知道如何使Javascript脚本这样排序吗?或者更好的是,如果您有一个AngularJS解决方案,因为我正在使用它。

提前感谢你能提供的任何帮助。

EN

回答 1

Stack Overflow用户

发布于 2015-09-04 19:50:28

代码语言:javascript
运行
复制
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'));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32404868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档