gpt4 book ai didi

javascript - 对 numAlpha 字符串列表进行排序

转载 作者:行者123 更新时间:2023-11-29 19:12:29 25 4
gpt4 key购买 nike

我正在尝试对包含数字和字母序列的字符串列表进行排序。我想先按数字排序,然后按 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
}
});

http://jsfiddle.net/8fRsD/307/

最佳答案

您可以使用正则表达式拆分字符串,并为非数字值提供前瞻性。

例如'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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com