Heim >Web-Frontend >js-Tutorial >Juerys Methode zur Lösung der chinesischen Tablesorter-Sortierung und der Zeichenrange_jquery

Juerys Methode zur Lösung der chinesischen Tablesorter-Sortierung und der Zeichenrange_jquery

WBOY
WBOYOriginal
2016-05-16 16:00:361559Durchsuche

Das Beispiel in diesem Artikel beschreibt Juerys Methode zur Lösung der chinesischen Tablesorter-Sortierung und des Zeichenbereichs. Teilen Sie es als Referenz mit allen. Die spezifische Analyse lautet wie folgt:

Tablesorter ist ein hervorragendes Plug-In zum Sortieren von Tabellen. Ich glaube, jeder hat es verwendet oder davon gehört, daher werde ich es hier nicht zu oft vorstellen. Weitere Informationen finden Sie im offiziellen Website: http://tablesorter.com/docs/ (die Demo ist relativ vollständig).

In mehreren mit Tablesorter entwickelten Projekten wurden zwei Arten von Sortierproblemen gefunden:

Das erste Problem besteht darin, dass chinesische Zeichen nicht sortiert werden können. Dies liegt daran, dass beim Sortieren der Zeichen die Zeichengröße anhand des Unicode-Werts verglichen wird. Der Code lautet wie folgt:

Js-Code

function sortText(a,b) {
  return ((a < b) &#63; -1 : ((a > b) &#63; 1 : 0));
};
function sortTextDesc(a,b) {
  return ((b < a) &#63; -1 : ((b > a) &#63; 1 : 0));
};
function sortText(a,b) {
  return ((a < b) &#63; -1 : ((a > b) &#63; 1 : 0));
};
function sortTextDesc(a,b) {
  return ((b < a) &#63; -1 : ((b > a) &#63; 1 : 0));
};

Das gewünschte Ergebnis ist eine Sortierung nach chinesischem Pinyin, sodass wir den Code in den folgenden Code ändern können:

Js-Code

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

Die Methode localeCompare ist eine Methode, die mit JS geliefert wird. Wie der Name schon sagt, vergleicht diese Methode jedoch die Größe von Zeichen basierend auf der aktuellen Region.

Das zweite Problem besteht darin, dass numerische Daten, die den Bereich überschreiten, nicht sortiert werden können. Dies liegt daran, dass der Datenwert während der numerischen Typkonvertierung verzerrt wird, zum Beispiel:

Js-Code

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

Eine solche Abweichung führt zu ungenauen Sortierergebnissen. Um dieses Problem zu vermeiden, sollten nicht die ursprünglichen Werte zum Vergleich verwendet werden. Stattdessen sollten die Gewichte für jeden numerischen Wert eingeführt werden Dann wird der neue, auf der Grundlage des Gewichts berechnete Wert mit dem ursprünglichen Wert zum Vergleich verwendet. Dieses Problem muss nur durch Ändern der formatFloat-Methode geändert werden.

Js-Code

this.formatFloat = function(s) {    
  // TODO    
  var i = parseFloat(s);    
  return (isNaN(i)) &#63; 0 : i;    
};

Ich hoffe, dass dieser Artikel für alle bei der jQuery-Programmierung hilfreich sein wird.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn