Сортировать данные с дефисом в jQuery DataTables - PullRequest
1 голос
/ 03 июля 2019

Я использую плагин для отображения данных.Первый столбец имеет «-» между числами.Когда я использую приведенный ниже код

$('#table').DataTable({
   dom:'Brt',
   columnDefs:[{targets:'_all',type:'num-fmt'}]
});

, таблица отображается так, как показано ниже

enter image description here

Я хочу отобразить ее в следующем порядке

enter image description here

Есть ли в любом случае, мы можем отображать данные в том же формате, но отсортированы без учета '-'

1 Ответ

1 голос
/ 03 июля 2019

Вы можете реализовать собственный поисковый плагин для вашего типа данных, основанный на числовых значениях двух чисел:

//source data
const srcData = [
  {val: '1-1'}, {val: '10-10'}, {val: '100-100'}, {val: '2-2'}, {val: '20-20'}, {val: '3-3'}, {val: '2-1'}
];

//initialize datatables
const dataTable = $('table').DataTable({
  dom: 't',
  order: [],
  data: srcData,
  columns: [{title: 'Value', data: 'val', type: 'num-num'}]
});

//compare function
const compare = (a,b) => {
    ([ax,ay] = a.split('-'));
    ([bx,by] = b.split('-'));
    return parseFloat(ax) <= parseFloat(bx) && parseFloat(ay) <= parseFloat(by) ? -1 : 1
}    

//custom sort plugin for type 'num-num'
Object.assign($.fn.DataTable.ext.oSort, {
  'num-num-asc': (a,b) => compare(a,b),
  'num-num-desc': (a,b) => compare(a,b)*(-1),
});
<!doctype html><html><head><script type="application/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script><script type="application/javascript" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script><link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css"></head><body><table></table></body></html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...