如何对javascript数组进行两次数字排序

如何对javascript数组进行两次数字排序,javascript,arrays,Javascript,Arrays,我有一系列圣经经文,我正试图按照经文的自然顺序排列 该数组如下所示: let array = ["1.2","1.3","1.19","2.25","1.0"] 我期望的最终结果是: 1.0, 1.2, 1.3, 1.19, 2.25 欢迎使用任何指针,我还没有想出一个完美的排序函数,在对十进制的另一端的所有其他数字排序之前,先对第一个数字进行排序 我认为目前需要改进的方法是: x.sort(function(a,b){ let y = a.split(".")[1] let x = b.

我有一系列圣经经文,我正试图按照经文的自然顺序排列

该数组如下所示:

let array = ["1.2","1.3","1.19","2.25","1.0"]
我期望的最终结果是:

1.0, 1.2, 1.3, 1.19, 2.25
欢迎使用任何指针,我还没有想出一个完美的排序函数,在对十进制的另一端的所有其他数字排序之前,先对第一个数字进行排序

我认为目前需要改进的方法是:

x.sort(function(a,b){

let y = a.split(".")[1]
let x = b.split(".")[1]

return a-b && y - x;
})
let数组=[“1.2”、“1.3”、“1.19”、“2.25”、“1.0”];
//将数字分成整数部分和小数部分
splits=array.map(x=>({
瓦尔:x,
int:Number(x.split(“.”[0]),
12月:编号(x.拆分(“.”[1])
}));
splits.sort(函数(a,b){
//首先比较整数部分,如果相等,则比较小数部分
返回(a.int==b.int)?(a.dec-b.dec):(a.int-b.int);
});
排序=splits.map(x=>x.val);

控制台日志(已排序)您当前的方法到底有什么不起作用?看起来很好用。你能举出一个排序函数失败的例子吗?谢谢@Xufox,什么方法能给你我在上面发布的预期结果?好吧,我只是将数组和你的排序函数复制粘贴到控制台中并尝试了一下:
let array=[
]
,然后
array.sort(
应该已经工作了。否则,请包括您得到的实际结果。但是,我要补充的是,您在其中放置了一个
&&
,这很奇怪。我会用
|
来做。具体来说:
返回a.split(“.”[0]-b.split(.”[0]| | a.split(.”[1]-b.split(.”[1]
。基本上,它是
return(第一个排序标准)| |(第二个排序标准)
。您还可以
返回a.int-b.int | | a.dec-b.dec
返回a_分割[0]-b_分割[0]| a_分割[1]-b_分割[1]