如何对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]代码>。