Maison >interface Web >js tutoriel >Méthode de Juery pour résoudre le tri chinois des tablesorter et range_jquery de caractères
L'exemple de cet article décrit la méthode de Juery pour résoudre le tri chinois et la plage de caractères de Tablesorter. Partagez-le avec tout le monde pour votre référence. L'analyse spécifique est la suivante :
tablesorter est un excellent plug-in de tri de tables parmi les plug-ins jQuery. Je pense que tout le monde l'a utilisé ou en a entendu parler, je ne le présenterai donc pas ici. Pour plus d'informations, vous pouvez consulter le site officiel. site internet : http://tablesorter.com/docs/ (la démo est relativement complète).
Dans plusieurs projets développés à l'aide de tablesorter, deux types de problèmes de tri ont été constatés, comme suit :
Le premier problème est que les caractères chinois ne peuvent pas être triés. En effet, lors du tri des caractères, la taille des caractères est comparée à l'aide de la valeur Unicode. Le code est le suivant :
.Code Js
function sortText(a,b) { return ((a < b) ? -1 : ((a > b) ? 1 : 0)); }; function sortTextDesc(a,b) { return ((b < a) ? -1 : ((b > a) ? 1 : 0)); }; function sortText(a,b) { return ((a < b) ? -1 : ((a > b) ? 1 : 0)); }; function sortTextDesc(a,b) { return ((b < a) ? -1 : ((b > a) ? 1 : 0)); };
Le résultat que nous voulons est de trier par pinyin chinois, nous pouvons donc modifier le code comme suit :
Code Js
function sortText(a,b) { return a.localeCompare(b); }; function sortTextDesc(a,b) { return b.localeCompare(a); }; function sortText(a,b) { return a.localeCompare(b); }; function sortTextDesc(a,b) { return b.localeCompare(a); };
La méthode localeCompare est une méthode fournie avec JS. Inutile de dire que, comme son nom l'indique, cette méthode compare la taille des caractères en fonction de la région actuelle. Cependant, cette méthode ne peut pas gérer les caractères polyphoniques.
Le deuxième problème est que les données numériques qui dépassent la plage ne peuvent pas être triées. En effet, la valeur des données est déformée lors de la conversion de type numérique, par exemple :
Code Js
alert(parseFloat('9999999999999999')); // 10000000000000000 alert(parseFloat('10000000000000001')); // 10000000000000000 alert(parseFloat('10000000000000004')); // 10000000000000004 alert(parseFloat('10000000000000005')); // 10000000000000004 alert(parseFloat('10000000000000006')); // 10000000000000006 alert(parseFloat('9999999999999999')); // 10000000000000000 alert(parseFloat('10000000000000001')); // 10000000000000000 alert(parseFloat('10000000000000004')); // 10000000000000004 alert(parseFloat('10000000000000005')); // 10000000000000004 alert(parseFloat('10000000000000006')); // 10000000000000006
Un tel écart rendra les résultats du tri inexacts. Afin d'éviter ce problème, les valeurs originales ne doivent pas être utilisées pour la comparaison. Au lieu de cela, les poids doivent être introduits de gauche à droite, le poids correspondant à chaque numérique. La valeur diminue. Ensuite, la nouvelle valeur calculée en fonction du poids et la valeur d'origine est utilisée à des fins de comparaison. Ce problème n'a besoin d'être modifié qu'en modifiant la méthode formatFloat.
Code Js
this.formatFloat = function(s) { // TODO var i = parseFloat(s); return (isNaN(i)) ? 0 : i; };
J'espère que cet article sera utile à la programmation jQuery de chacun.