我在对jquery数据表中的列进行排序时遇到一些问题。
我想对第一列进行升序/降序排序。
这是列中的一些数据(默认按desc排序):
R949
R923
R909
R594
R559
R1017
您会看到默认的排序算法不适用于字母数字字符。
这是我的设置
$('#myTable').dataTable({
"aaSorting": [[0, "desc"]],
"paging": false,
"lengthChange": false,
"searching": true,
"ordering": true,
"info": true,
"autoWidth": false
)}
我的愿望下降结果:
R1017
R949
R923
R909
R594
R559
有人暗示我做错了什么吗?我也尝试使用
"columnDefs": [
{"type": "natural", "targets": 0 }]
但这也不起作用
答案 0 :(得分:0)
您正在使用的字符串将被计算:
R0xxxxx 您需要进行自然排序: function naturalSort(a, b) {
var ax = [], bx = [];
a.replace(/(\d+)|(\D+)/g, function(_, $1, $2) { ax.push([$1 || Infinity, $2 || ""]) });
b.replace(/(\d+)|(\D+)/g, function(_, $1, $2) { bx.push([$1 || Infinity, $2 || ""]) });
while(ax.length && bx.length) {
var an = ax.shift();
var bn = bx.shift();
var nn = (an[0] - bn[0]) || an[1].localeCompare(bn[1]);
if(nn) return nn;
}
return ax.length - bx.length;
}
test = [
"R12",
"R10",
"R2",
"R1",
"R101",
"R101",
"R10"
];
test.sort(naturalSort);
document.write("<pre>" + JSON.stringify(test,0,3));