この記事の例では、テーブルソーターの中国語ソートと文字範囲を解決する Juery の方法について説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです。
tablesorter は、jQuery プラグインの中でも優れたテーブルソートプラグインです。誰もが使用したり、聞いたことがあると思いますので、ここではあまり紹介しません。詳細については、公式を参照してください。 Web サイト: http://tablesorter .com/docs/ (デモは比較的完成しています)。
tablesorter を使用して開発されたいくつかのプロジェクトで、次の 2 種類の並べ替えの問題が見つかりました。
最初の問題は、中国語の文字をソートできないことです。これは、文字をソートするときに、文字サイズが Unicode 値を使用して比較されるためです。
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)); };
私たちが望む結果は中国語のピンインで並べ替えることなので、コードを次のコードに変更できます:
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
JSコード
this.formatFloat = function(s) { // TODO var i = parseFloat(s); return (isNaN(i)) ? 0 : i; };