gpt4 book ai didi

javascript - 在 Javascript 中对数字和文本进行排序

转载 作者:行者123 更新时间:2023-12-03 12:43:58 27 4
gpt4 key购买 nike

我正在使用 jquery 下拉表过滤器插件来进行表过滤器:

https://github.com/rbayliss/Dropdown-Table-Filter

当我的表格中有一个数字列时,数字将按文本排序,例如1、10、100、2、20、200 ...

在代码中,排序器如下所示:

  if(options.sortOpt) {
opts.sort(options.sortOptCallback);
}

我认为这是一个递归调用:

sortOptCallback: function(a, b) {
return a.text.toLowerCase() > b.text.toLowerCase();
},

我应该如何修改它才能正确排序数字字段?我尝试过以下方法:

sortOptCallback: function (a, b) {
if (isNaN(parseInt(a)) || isNaN(parseInt(b))) {
return a.text.toLowerCase() > b.text.toLowerCase();
} else {
return a > b;
}
},

谢谢

最佳答案

您的尝试几乎是正确的。唯一的问题是,在确定元素是数字后,您仍然将元素作为字符串进行比较。此外,sort回调期望:

  • 如果 a > b 则为正数
  • 如果 a < b 则为负数
  • 如果相等则为零。

考虑到这一点,尝试这个回调:

if( a == b) return 0;
var anum = parseInt(a,10);
var bnum = parseInt(b,10);
if( isNaN(anum) || isNaN(bnum)) {
return a.toLowerCase() > b.toLowerCase() ? 1 : -1;
}
return anum > bnum ? 1 : -1;

编辑:@PaoloMoretti 让我注意到你的所有项目都是数字的。在这种情况下,您可以这样做:

return a-b;

关于javascript - 在 Javascript 中对数字和文本进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23409254/

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