gpt4 book ai didi

javascript - 为什么这种排序不正确?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:22:30 34 4
gpt4 key购买 nike

所以我尝试采用这样的数组

 ["2015/10","2015/1","2015/6","2015/12","2015/3","2015/7","2015/2","2016/1","2015/8","2015/5","2015/11","2015/9","2015/4"]

,其中XXXX/YY为年/月格式,从小到大排序。

尝试,使用 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort作为引用:

month_keys.sort(function(x,y){
var partsX = x.split('/'), partsY = y.split('/');
return partsX[0] < partsY[0] ? -1 : ( partsX[1] < partsY[1] ? -1 : 1 );
})...

这给了我

 ["2015/1","2015/11","2016/1","2015/10","2015/12","2015/2","2015/3","2015/5","2015/5","2015/6","2015/7","2015/8","2015/9"]

在我一开始给出的示例数组中。我做错了什么?

最佳答案

您比较的是字符串,而不是数字。比较字符串时,它们是逐个字符比较的,因此以 1 开头的任何内容都在开头的内容之前,例如用 2。即使是 10 对 2。

将它们转换为数字,你应该得到你想要的顺序:

var partsX = +x.split('/'),
partsY = +y.split('/');

您还需要修复实际比较:

if (partsX[0] < partsY[0]) return -1;
else if (partsX[0] > partsY[0]) return 1;
else if (partsX[1] < partsY[1]) return -1;
else if (partsX[1] > partsY[1]) return 1;
else return 0;

关于javascript - 为什么这种排序不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34645005/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com