jQuery tablesorter - сортировка столбца со смешанным текстом и числами - PullRequest
1 голос
/ 29 января 2010

У меня есть таблица со столбцом данных, который состоит из текста и цифр. Я сортирую его, используя jQuery и плагин tablesorter . Данные, которые не будут правильно сортироваться, представляют собой теги оборудования, например, «AHU-1», «AHU-2», «AHU-10». Проблема заключается в том, что, учитывая эти примерные значения, AHU-10 будет размещен между AHU-1 и AHU-2. Я обнаружил, что принудительная сортировка по цифрам не решает проблему.

Вот мой вопрос: 1) Кто-нибудь знает о существующем парсере, который я могу использовать в этой ситуации? Если его нет, мне нужно написать свой собственный парсер, в этом случае 2) Как мне написать парсер? Должен ли я попытаться перевести каждую букву в число и выполнить числовую сортировку? Это моя первоначальная мысль.

Еще одна вещь, я не знаю наверняка, что дефис будет разделителем. «AHU-1» также может быть «AHU1», или «AHU 1», или «AHU: 1», или что-то еще.

Ответы [ 2 ]

1 голос
/ 29 января 2010

Вам нужно написать свой собственный парсер. То, что вы ищете, называется " natural sort ". Существует множество алгоритмов естественной сортировки javascript. Я не смог найти ни одного предзаказанного для плагина tableorter, но поиск в Google оказывается довольно много.

1 голос
/ 29 января 2010

Если все, что вам нужно сделать, это отсортировать любую строку шаблона AAA-1 как AAA-01, вы можете сделать следующее:

var myTextExtraction = function(node)  
{  
    // extract data from markup and return it  
    return node.childNodes[0].childNodes[0].innerHTML
               .replace(/([A-Z]{3}-)(\d)/,'$1-0$2'); 
} 
$(document).ready(function() 
    { 
        $("#myTable").tableSorter( {textExtraction: myTextExtraction} ); 
    } 
); 
...