排序混合字母/数字数组 [英] Sort mixed alpha/numeric array

查看:32
本文介绍了排序混合字母/数字数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个混合数组,我需要先按字母然后按数字排序

I have a mixed array that I need to sort by alphabet and then by digit

[A1, A10, A11, A12, A2, A3, A4, B10, B2, F1, F12, F3]

我该如何排序:

[A1, A2, A3, A4, A10, A11, A12, B2, B10, F1, F3, F12]

我试过了

arr.sort(function(a,b) {return a - b});

但这只是按字母顺序排序.这可以用直接的 JavaScript 或 jQuery 来完成吗?

but that only sorts it alphabetically. Can this be done with either straight JavaScript or jQuery?

推荐答案

var reA = /[^a-zA-Z]/g;
var reN = /[^0-9]/g;

function sortAlphaNum(a, b) {
  var aA = a.replace(reA, "");
  var bA = b.replace(reA, "");
  if (aA === bA) {
    var aN = parseInt(a.replace(reN, ""), 10);
    var bN = parseInt(b.replace(reN, ""), 10);
    return aN === bN ? 0 : aN > bN ? 1 : -1;
  } else {
    return aA > bA ? 1 : -1;
  }
}
console.log(
["A1", "A10", "A11", "A12", "A2", "A3", "A4", "B10", "B2", "F1", "F12", "F3"].sort(sortAlphaNum)
)

这篇关于排序混合字母/数字数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆