Я пытаюсь сортировать числа, как эти:пользовательскую сортировку экспоненциальное с помощью JQuery плагин DataTables
< 1Е-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
});
});
Вы говорите, что для регулярного выражения требуется '|'? Я не думаю, что это важно, пишите ли вы [<>] или^(<|>). Функции сортировки, похоже, работают.Меня смущает то, что плагин dataTables не работает, когда я пытаюсь заставить его использовать эти функции сортировки. – gideonite