2010-01-28 2 views
1

J'ai une table avec une colonne de données composée de texte et de nombres. Je le trier en utilisant jQuery et le tablesorter plugin. Les données qui ne sont pas triées correctement sont les étiquettes d'équipement, par exemple "AHU-1", "AHU-2", "AHU-10". Le problème est, étant donné ces valeurs d'exemple, AHU-10 sera placé entre AHU-1 et AHU-2. J'ai trouvé que forcer un tri 'digit' ne résout pas le problème.jQuery tablesorter - trier une colonne avec du texte et des nombres mélangés

Voici ma question: 1) Est-ce que quelqu'un sait d'un analyseur existant que je peux utiliser dans cette situation? S'il n'y en a pas, alors je devrai écrire mon propre analyseur, auquel cas 2) Comment écrire l'analyseur? Devrais-je essayer de traduire chaque lettre en un nombre et faire un tri numérique? C'est ma première pensée.

Encore une chose, je ne suis pas sûr qu'un trait d'union sera le délimiteur. "AHU-1" pourrait aussi être "AHU1", ou "AHU 1", ou "AHU: 1", ou autre chose.

Répondre

1

Vous avez besoin d'écrire votre propre analyseur. Ce que vous cherchez s'appelle "natural sort". Il y a beaucoup d'algorithmes de tri naturels javascript là-bas. Je ne pouvais pas trouver un pré-écrit pour le plugin tablesorter, mais googling se révèle un certain nombre.

+1

C'est une bonne information, merci. Parfois, avec Google, vous avez juste besoin de connaître le bon terme (comme "nature"). Je vais vous laisser savoir ce que je trouve. – Jacob

1

En supposant que tout ce que vous devez faire est sorte une chaîne du motif AAA-1 AAA-01, vous pouvez effectuer les opérations suivantes:

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}); 
    } 
); 
+0

J'ai commencé avec votre code, puis j'ai fait un tas d'itérations pour essayer de le faire fonctionner, mais rien de ce que j'ai fait n'a résolu le problème. Je vais me pencher sur les algorithmes de tri naturels proposés par ithcy et partir de là. – Jacob

Questions connexes