作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试对包含数字和字母序列的字符串列表进行排序。我想先按数字排序,然后按 alpha 排序,例如 1a、2b、4、77c、743 等。
我一直在玩弄以下 javascript,差点撞到墙上。谁能给我一些指示?
var a1 = ["4a", "4c", "1a", "4b", "13c", "4a", "1a", "11c", "112c", "12", "9"];
var a2 = a1.sort(function(a, b) {
if (a.slice(-1) == "a" || a.slice(-1) == "b" || a.slice(-1) == "c") {
var charPart = [a.slice(-1), b],
numPart = [a.slice(0, a.length - 1), b];
if (b.slice(-1) == "a" || b.slice(-1) == "b" || b.slice(-1) == "a") {
var charPart = [a.slice(-1), b.slice(-1)],
numPart = [a.slice(0, a.length - 1), b.slice(0, b.length - 1)];
}
}
if (numPart[0] < numPart[1]) return -1;
else if (numPart[0] > numPart[1]) return 1;
else if (numPart[0] == numPart[1]) return -1;
else {
if (charPart[0] < charPart[1]) return -1;
else if (charPart[0] > charPart[1]) return 1
}
});
最佳答案
您可以使用正则表达式拆分字符串,并为非数字值提供前瞻性。
例如'13c'
拆分后变成['13', 'c']
。
在回调中,使用值或默认值(如空字符串)进行比较。
var a1 = ["4a", "4c", "1a", "4b", "13c", "4a", "1a", "11c", "112c", "12", "9"];
a1.sort(function (a, b) {
var aa = a.split(/(?=\D)/),
bb = b.split(/(?=\D)/);
return aa[0] - bb[0] || (aa[1] || '').localeCompare(bb[1] || '');
});
console.log(a1);
关于javascript - 对 numAlpha 字符串列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37776721/
我正在尝试对包含数字和字母序列的字符串列表进行排序。我想先按数字排序,然后按 alpha 排序,例如 1a、2b、4、77c、743 等。 我一直在玩弄以下 javascript,差点撞到墙上。谁能给
我是一名优秀的程序员,十分优秀!