Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript localeCompare排序不好[“aaa-1.0”、“aaa-1.1”、“aaa-1.01”、“aaa-11”、“aaa-2.01”]_Javascript_Sorting - Fatal编程技术网

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

JavaScript localeCompare排序不好[“aaa-1.0”、“aaa-1.1”、“aaa-1.01”、“aaa-11”、“aaa-2.01”],javascript,sorting,Javascript,Sorting,我想按十进制数值和字母顺序对字符串进行排序。保持它的自然秩序 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:

我想按十进制数值和字母顺序对字符串进行排序。保持它的自然秩序

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.sortfunctiona,b{ var splitA=a.split-; var splitB=b.split-; 如果splitA[0]==splitB[0]{ 返回NumbersplitA[1]-NumbersplitB[1]; }否则{ 返回splitA[0].localecompareplitb[0],未定义{ 数字:对, 敏感度:“基本” }; } }; 控制台。日志阵列 您可以将中的标志IgnorePerception设置为true

变量数组=[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] array.sort函数a,b{ 返回a.localeCompareb,未定义,{IgnorePerception:true,numeric:true,sensitivity:'base'}; }; console.logarray;
.作为控制台包装器{max height:100%!important;top:0;}@GabrielBleu,而不是在边缘。@GabrielBleu,它似乎依赖于用户代理实现。在我的情况下,它是有效的,不幸的是,它不是通用解决方案。谢谢