gpt4 book ai didi

jQuery tablesorter - 连字符以及带小数的数字( float )导致排序问题

转载 作者:行者123 更新时间:2023-12-01 01:15:24 25 4
gpt4 key购买 nike

要求
我的表可以有这样的值 -

1.00
0.00
23.10
-
35.00
-
22.00
0.00
0.00

我希望它像这样排序(所有连字符都应该在最后)-

1.00
22.00
23.10
35.00
0.00
0.00
0.00
-
-

或者甚至这样也可以(所有连字符都在开头,至少它们与其他连字符分开)-

-
-
0.00
0.00
0.00
1.00
22.00
23.10
35.00

我做了什么
我正在使用这样的自定义排序器(这是我们在项目中使用的排序器,它对于整数和小数(即浮点类型)工作得非常好)-

$.tablesorter.addParser({
// set a unique id
id: 'formattedNumbers',
is: function(s){
// return false so this parser is not auto detected
return false;
},
format: function(s){
// format your data for normalization
return s.replace(/,/g, '').replace(/%/g, ''); //removes comma separator from formatted numbers

},
// set type, either numeric or text
type: 'numeric'
});

这样调用它 -

$("#"+report_type).tablesorter({
indexing: true,
textExtraction: 'complex',
headers : 1: {
{ sorter: 'formattedNumbers' },
},
widgets :['zebra'],
sortList:[[0,0]]
});

我得到的结果
但我得到了不可预测的结果。除 0.00 和连字符 (-) 之外的数字彼此之间已正确排序,但某些 0.00 和连字符仍然随机分散。像这样 -

0.00
1.00
22.00
0.00
-
23.10
-
35.00
0.00
-

我的想法

我们需要更改自定义排序器内部的逻辑以处理连字符。我尝试按照 jQuery tablesorter - sorting a column with mixed text and numbers 中的建议寻找自然排序但没有找到任何像我们的“formattedNumbers”一样工作的自定义排序器。

最佳答案

friend ,请更改您的添加解析器代码。

旧代码

format: function(s){
// format your data for normalization
return s.replace(/,/g, '').replace(/%/g, ''); //removes comma separator from formatted numbers

}

在莫蒂给出的建议之后。

更新了代码

format: function(s){
// format your data for normalization
s = s.replace(/,/g, '').replace(/%/g, ''); //removes comma, percentage
if(s && s.trim() && s.trim().length==1){
s = s.replace(/-/g,'');
}
return s;
}

希望这能解决您的问题。在你给出的场景中(values包含较多的0,并且没有出现负数),为了让它看起来更漂亮,你可以将'-'替换为-1,以将其与零分开。

更新版本(如果您确定不会有数据<0):

format: function(s){
// format your data for normalization
s = s.replace(/,/g, '').replace(/%/g, ''); //removes comma, percentage
if(s && s.trim() && s.trim().length==1){
s = s.replace(/-/g,'-1');
}
return s;
}

干杯。

关于jQuery tablesorter - 连字符以及带小数的数字( float )导致排序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19051128/

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