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
我编写的表达式的输出。如果您只是简单地复制并粘贴它,它当然不起作用!