gpt4 book ai didi

JavaScript localeCompare 排序不好 [ "aaa-1.0"、 "aaa-1.1"、 "aaa-1.01"、 "aaa-11","aaa-2.01"]

转载 作者:行者123 更新时间:2023-12-03 03:13:52 24 4
gpt4 key购买 nike

我想按字符串的“十进制”数值以及字母顺序对字符串进行排序。保持自然顺序。

var strArray = ["aaa-0", "aaa-0.01", "aaa-1.0", "aaa-1.1", "aaa-1.01", "aaa-2.01", "bbb-2.01", "aaa-11", "aaa-2.01"]

strArray.sort(function (a, b) {
return a.localeCompare(b,undefined, {numeric: true, sensitivity: 'base'});
});

返回:

["aaa-0", "aaa-0.01", "aaa-1.0", "aaa-1.1", "aaa-1.01", "aaa-2.01", "aaa-2.01", "aaa-11", "bbb-2.01"]

虽然我想要:

["aaa-0", "aaa-0.01", "aaa-1.0", "aaa-1.01", "aaa-1.1", "aaa-2.01", "aaa-2.01", "aaa-11", "bbb-2.01"]

如何实现这一点?即使我使用“,”而不是“。”排序是一样的。

最佳答案

您需要分别对数字和字母进行排序。

演示

var strArray = ["aaa-0", "aaa-0.01", "aaa-1.0", "aaa-1.1", "aaa-1.01", "aaa-2.01", "bbb-2.01", "aaa-11", "aaa-2.01"]

strArray.sort(function(a, b) {
var splitA = a.split("-");
var splitB = b.split("-");
if (splitA[0] == splitB[0]) {
return (Number(splitA[1]) - Number(splitB[1]));
} else {
return splitA[0].localeCompare(splitB[0], undefined, {
numeric: true,
sensitivity: 'base'
});
}
});
console.log(strArray);

关于JavaScript localeCompare 排序不好 [ "aaa-1.0"、 "aaa-1.1"、 "aaa-1.01"、 "aaa-11","aaa-2.01"],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46847780/

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