ホームページ > ウェブフロントエンド > jsチュートリアル > tablesorter の中国語ソートと文字 range_jquery を解決するための Juery のメソッド

tablesorter の中国語ソートと文字 range_jquery を解決するための Juery のメソッド

WBOY
リリース: 2016-05-16 16:00:36
オリジナル
1591 人が閲覧しました

この記事の例では、テーブルソーターの中国語ソートと文字範囲を解決する Juery の方法について説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです。

tablesorter は、jQuery プラグインの中でも優れたテーブルソートプラグインです。誰もが使用したり、聞いたことがあると思いますので、ここではあまり紹介しません。詳細については、公式を参照してください。 Web サイト: http://tablesorter .com/docs/ (デモは比較的完成しています)。

tablesorter を使用して開発されたいくつかのプロジェクトで、次の 2 種類の並べ替えの問題が見つかりました。

最初の問題は、中国語の文字をソートできないことです。これは、文字をソートするときに、文字サイズが Unicode 値を使用して比較されるためです。

JS コード

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));
};
ログイン後にコピー

私たちが望む結果は中国語のピンインで並べ替えることなので、コードを次のコードに変更できます:

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);
};
ログイン後にコピー

localeCompare メソッドは、言うまでもなく、名前が示すように、現在のリージョンに基づいて文字のサイズを比較します。ただし、このメソッドはポリフォニック文字を処理できません。

2 番目の問題は、範囲を超える数値データを並べ替えることができないことです。これは、次のような数値型の変換中にデータ値が歪むためです。

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
ログイン後にコピー
このようなずれがあると、ソート結果が不正確になります。この問題を回避するには、元の値を比較に使用しないでください。代わりに、各数値に対応する重みを導入する必要があります。値が減少すると、重みに基づいて計算された新しい値と元の値が比較に使用されます。この問題は、formatFloat メソッドを変更するだけで済みます。

JSコード

this.formatFloat = function(s) {    
  // TODO    
  var i = parseFloat(s);    
  return (isNaN(i)) &#63; 0 : i;    
};
ログイン後にコピー
この記事が皆さんの jQuery プログラミングに役立つことを願っています。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート