Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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/2/jquery/71.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 将浮点数排序为自然数_Javascript_Jquery_Sorting - Fatal编程技术网

Javascript 将浮点数排序为自然数

Javascript 将浮点数排序为自然数,javascript,jquery,sorting,Javascript,Jquery,Sorting,我有一个逗号分隔的浮点数 var example = "1.1, 1.10, 1.2, 3.1, 3.14, 3.5"; 我想把这些浮点数排序如下: "1.1, 1.2, 1.10, 3.1, 3.5, 3.14" 实际上,在我的例子中,小数之后的数字将被视为一个自然数,因此1.2将被认为是“2”,而1.10将被视为“10”,这就是为什么1.2将先于1.10。 建议或例子对我来说会很好,谢谢 实际上,我想首先根据小数点之前的数字对数组进行排序:),然后运行上述逻辑。您需要一个自定义排序函数

我有一个逗号分隔的浮点数

 var example = "1.1, 1.10, 1.2, 3.1, 3.14, 3.5";
我想把这些浮点数排序如下:

"1.1, 1.2, 1.10, 3.1, 3.5, 3.14"
实际上,在我的例子中,小数之后的数字将被视为一个自然数,因此1.2将被认为是“2”,而1.10将被视为“10”,这就是为什么1.2将先于1.10。 建议或例子对我来说会很好,谢谢


实际上,我想首先根据小数点之前的数字对数组进行排序:),然后运行上述逻辑。

您需要一个自定义排序函数,该函数首先比较小数点之前的数值,然后比较小数点之后的数值,以防它们相等

example.split(", ").sort(function (a, b) {
    var aParts = a.split(".", 2);
    var bParts = b.split(".", 2);
    if (aParts[0] < bParts[0]) return -1;
    if (aParts[0] > bParts[0]) return 1;
    return aParts[1] - bParts[1]; // sort only distinguishes < 0, = 0 or > 0
}).join(", ");
example.split(“,”).sort(函数(a,b){
var aParts=a.split(“.”,2);
var b部分=b.分割(“.”,2);
if(aParts[0]bParts[0])返回1;
返回aParts[1]-bParts[1];//排序仅区分<0、=0或>0
}).加入(“,”);
您可以使用自定义比较功能,如下所示

var-example=“1.1、1.10、1.2、3.1、3.14、3.5”;
var res=example.split(',).sort(函数(a,b){
var结果;
a=a.拆分('.'),
b=b.分割('.');
while(a.长度){
结果=a.shift()-(b.shift()| | 0);
如果(结果){
返回结果;
}
}
返回-b.长度;
})。加入(‘,’);

控制台日志(res)您的示例使用的是小数后的1位数字,而不是超过1位的数字。下面是您的示例实现:)您只需
console.log
上面表达式的值。1.1、1.2、1.2、1.3、1.3、1.4、1.5、1.6、1.7、1.8、1.8、1.9、1.10、1.11、1.10、1.11、1.12、1.12、1.13、1.1.1、1.11、1.11、1.11、1.11、1.11、1.12、1.12、1.12、1.12、1.13、1.13、1.13、1.14、1.14、1.14、1.14、1.15、1.1.15、1.15、1.15、1.15、1.15、1.15、1.15、1.15、1.16、1.16、1.16、1.16、1.15、1.16、1.16、1.16、1.15、1.16、1.16、1.16、1.17、1.1.17嗯。但你最初的问题并没有提到这种可能性。谭咏麟,我分享了这个链接,你有一个例子,它不是100%有效。不管怎样,谢谢:)所以你还是不明白我告诉你的。您必须
console.log
我编写的表达式的输出。如果您只是简单地复制并粘贴它,它当然不起作用!