我的表中有一列是一个值为0-1的浮点数。我希望它显示为有序标签,但按原始值排序。
例如,使用以下规则集...
if (value > 0.55) {
"high"
} else if (value > 0.45) {
"moderate"
} else {
"low"
}
和值......
[0.5, 0.7, 0.2, 0.4, 0.9]
我希望专栏阅读......
|moderate|
|high |
|low |
|low |
|high |
但仍可按原始值排序。
我尝试用jQuery.fn.dataTableExt.oSort
写一个扩展程序而没有太多运气。还有其他想法吗?
答案 0 :(得分:1)
使用columns.render
选项仅在显示该内容时为单元格生成内容。 jQuery DataTables将使用原始数值进行排序。
例如:
var table = $('#example').DataTable({
columnDefs: [
{
targets: 1,
render: function(data, type, full, meta){
if(type === 'display'){
if (data > 0.55) {
data = "high ";
} else if (data > 0.45) {
data = "moderate";
} else {
data = "low";
}
}
return data;
}
}
]
});
请参阅this example以获取代码和演示。
答案 1 :(得分:0)
老实说,我不知道数据表是如何工作的,但是下面的代码片段可能会给你一些想法。
label = (n => (n > 0.45 ? (n > 0.55 ? 'high' : 'moderate') : 'low'))
ary = [ 0.5, 0.7, 0.2, 0.4, 0.9 ]
ary.forEach(i => console.log(label(i)))

以下代码段是一种简单的尝试,将这些数据呈现为表格项目。
label = (n => (n > 0.45 ? (n > 0.55 ? 'high' : 'moderate') : 'low'))
as_row_item = (el) => "<tr><td>"+el+"</td><td>";
ary = [ 0.5, 0.7, 0.2, 0.4, 0.9 ]
ary.forEach(i => document.querySelector("table").innerHTML += as_row_item(label(i)));
&#13;
table, tr, td {
border: 1px solid #ccc;
}
&#13;
<table></table>
&#13;