У меня есть такая таблица, которую я хочу отсортировать:
| Имя | Дело |
| Джон | X-123/08 P |
| Боб | X-123/09 |
| Дилан | X-45/10 |
Я хочу отсортировать столбец Case по году обращения, а затем по номеру дела, зная, что формат всегда «X- (от 1 до 4 цифр для номера дела) / (год дела из 2 цифр) (иногда некоторый текст)». Вполне возможно, что после года у меня будет какой-то текст, но он будет проигнорирован для сортировки.
Я использую плагин TableSorter jQuery и пытаюсь добавить для этого собственный анализатор.
Спасибо за вашу помощь!
РЕДАКТИРОВАТЬ: Вот что я пытаюсь сделать:
jQuery.tablesorter.addParser({
// set a unique id
id: 'case',
is: function(s) {
return false;
},
format: function(s) {
// format your data for normalization
return s.replace(/^X-\d{1,4}\/(\d{2}).*$/, '$1') + ('000' + s.replace(/^X-(\d{1,4})\/\d{2}.*$/, '$1')).substr(-4);
},
// set type, either numeric or text
type: 'text'
});
Это прекрасно работает, пока я не сталкиваюсь с делом с 2 цифрами, которое затем оценивается больше, чем 3 цифры, и я не понимаю, почему ...
«X-458/09 P» сортируется меньше, чем «X-48/09». Я попробую отладку, чтобы увидеть, что на самом деле происходит.
РЕДАКТИРОВАТЬ 2: также попробовал второй ответ:
jQuery.tablesorter.addParser({
// set a unique id
id: 'case',
is: function(s) {
return false;
},
format: function(s) {
var m = s.match(/X\-(\d+)\/(\d{2}).*$/);
var affaire = m[1];
var year = m[2];
return year + '000' + affaire;
},
// set type, either numeric or text
type: 'text'
});
Результат, похоже, такой же, как и первый ... Я действительно не могу понять, почему это отстой. Почему TableSorter считает, что 488 000 10 меньше, чем 49 000 10?!