排序混合字母/数字阵列 [英] Sort mixed alpha/numeric array
本文介绍了排序混合字母/数字阵列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个混合阵列,我需要按照字母排序,然后按数字
〔A1,A10,A11,A12,A2,A3,A4,B10,B2,F1,F12,F]
我如何对它进行排序是:
[A1,A2,A3,A4,A10,A11,A12,B2,B10,F1,F3,F12]
我曾尝试
arr.sort(功能(A,B){返回 - B});
但只按字母顺序进行排序。
可这可采用标准JavaScript或jQuery的做什么?
感谢您!
解决方案
VAR REA = / [^ A-ZA-Z] /克;
VAR REN = / [^ 0-9] /克;
功能sortAlphaNum(A,B){
变种AA = a.replace(REA,);
变种BA = b.replace(REA,);
如果(AA === BA){
变种AN = parseInt函数(a.replace(仁,),10);
VAR bN的= parseInt函数(b.replace(仁,),10);
返回=== bN的? 0:AN> bN的? 1:-1;
}其他{
返回AA> BA? 1:-1;
}
}
[A1,A10,A11,A12,A2,A3,A4,B10,B2,F1,F12,F3。排序(sortAlphaNum);
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]
how do i sort it to be:
[A1, A2, A3, A4, A10, A11, A12, B2, B10, F1, F3, F12]
i have tried
arr.sort(function(a,b) {return a - b});
but that only sorts it alphabetically. Can this be done with either straight JavaScript or jQuery?
Thank you!
解决方案
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;
}
}
["A1", "A10", "A11", "A12", "A2", "A3", "A4", "B10", "B2", "F1", "F12", "F3"].sort(sortAlphaNum);
这篇关于排序混合字母/数字阵列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文