显示数字列并将其排序为有序类别

时间:2017-11-08 20:41:25

标签: javascript jquery datatables

我的表中有一列是一个值为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写一个扩展程序而没有太多运气。还有其他想法吗?

2 个答案:

答案 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;
&#13;
&#13;