我正在尝试对这样的数字进行排序:
<1E-8
0.000027
0.000061
0.0018
0.0094
<8.64e-12
0.049
'<' 表示真实值小于给定的数字。
这是我的“下降功能”,我对此非常有信心:
$.fn.dataTableExt.oSort['scientific-desc'] = function(a,b) {
var x = a.replace(/^[<>]/g,"");
var y = b.replace(/^[<>]/g,"");
x = parseFloat(x);
y = parseFloat(y);
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}
我同样定义了一个“上升函数”:
$.fn.dataTableExt.oSort['scientific-asc'] = function(a,b) {
var x = a.replace(/^[<>]/g,"");
var y = b.replace(/^[<>]/g,"");
x = parseFloat(x);
y = parseFloat(y);
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}
我已经使用了初始化代码中的几乎所有内容以及上述排序函数,但似乎没有什么能够让数字在表中正确排序。<1E-8 的数字总是保持在一起,小写字母“e”的数字也是如此。
初始化dataTable的代码如下。可能值得注意的是,这是在 AJAX 调用内部调用的代码:
$.get('xyz.json',
function(data) {
// deal with json data
// get it ready for dataTable
// ...
$('.table').dataTable( {
"sScrollY": "200px",
"aoColumns": [
null,
null,
{"bSortable": true, "sType": "scientific"},
{"bSortable": false}
],
"aaSorting": [ [2,'asc'] ],
"bPaginate": false,
"bFilter": false,
"iDisplayLength": 5,
"bRetrieve": true,
"bDestroy": true
} );
});