最近、JSソートの問題は、データベースのソートがリソースを消費しすぎてソートすると、サーバーメモリの消費を大幅に削減できることです。クライアントでは、JSを除いて、残念ながら私はあまりにもひどく学びました。エッセンスエッセンス私のテスト後、JSビルド - インメソッドソートは非常に効率的です
ソート関数はJSでデフォルトで提供されていることを知っていますが、この関数はアレイコンテンツのASCIIコードに従って配置されています。 PHPにはMulti_Sort関数がありますが、JSにはそのような関数はないようですが、JSの種類は2次元アレイの比較関数を定義できるパラメーターも提供するため、重要ではありません。
1。数値で並べ替えます
次の配列を仮定します
次のようにコードコードをコピーします。
var arr = [[1、2、3]、[7、2、3]、[3、2、3]];
各サブアレイの最初の列を並べ替えたい場合はどうしますか?
次のようにコードコードをコピーします。
arr.sort(function(x、y){
x [0] y [0]を返します。
});
ここでの比較関数の役割は何ですか?実際、アレイはX、Yに複製されます。たとえば、最初にarr [0]をxに割り当て、次にx [0] y [0]を使用します、戻り値が戻っている場合、それは0より大きい数字です。 Y、そして最初の2つがソートされます。これは、デフォルトのシーケンスの比較関数です。順序を調整する必要があります最初の列でソートすることもできます。ここでのソートは、arrの配列構造を変更するため、並べ替えarrは最初の列に従って宣伝される配列です。
2。文字列でソートします
文字列でソートされている場合は、JSが提供するLocalEcompareメソッドを使用できます。
LocalEcompare:2つの文字列を特定の順序で比較します。
LocalEcompareメソッドの使用規則は、StringObject.LocaleCompare(ターゲット)です。 StringObjectがターゲットよりも大きい場合、メソッドは0を超える数値を返します。 2つの文字列が等しい場合、またはローカルソートルールに従って違いがない場合、この方法は0を返します。ローカルルールは、これらのローカル文字のルールを並べ替えて、ローカルルールを並べ替えます。たとえば、オペレーティングシステム。
例えば
次のようにコードコードをコピーします。
var arr = [['in'、 'country']、['ah'、 '']、['oh'、 ''、 '];
arr.sort(function(x、y){
x [0] .localecompare(y [0])を返します。
});
その結果、漢字の最初の列のピニインに並べ替えられます中国とsinoの混合列を含む文字列の並べ替え。注文の順序については、この方法は上記と同じであり、メソッドはy [0] .localecompare(x [0])を返すように変更されます。
このようにして、ソートの問題が実現されており、JS 2次元配列にはまだ多くの場所があります。一部の人々を助けることを願っています
次のようにコードコードをコピーします。
関数tblsort(s){
for(r = 0; r <right_len; r ++){
arrs [r] = []
for(c = 0; c <cel_len; c ++){
arrrs [r] [c] = {} // 2つの次元配列に別のオブジェクトを作成します。
arrs [r] [c] .html = table.rows [r] .cells [c] .innerhtml // htmlのテーブルを関連配列に入れ、ソート後にページに表示されます。
var text = table.rows [r] .cells [c] .innertext //次の判断に対してフォームのテキストコンテンツを取得します。
//データが正常でない場合に負のように見える可能性のある検出は、最後にランク付けします。
if(text == ' - '){{
arrs [r] [c] .text = '-1';
} else if(text == 'reintegle'){{
arrs [r] [c] .text = '-2';
} else if(text == 'no baidu snapshot' || text == 'ランキングデータなし'){
arrs [r] [c] .text = '-3'
} else if(text == ''){
arrs [r] [c] .text = '-4'
} それ以外 {
arrs [r] [c] .text = table.rows [r] .cells [c] .innertext //テーブルのテキストコンテンツを関連する配列に入れます。ソートについては、ソートについて。
}
}
}
// alert(arrs [0] [0] ['text'])
// reve判断は現在並べ替えられています。
if(reve){
arrs.sort(function(x、y){
parsefloat(y [s] ['text'])-parsefloat(x [s] ['text'])return
});
reve = 0
} それ以外 {
arrs.sort(function(x、y){
parsefloat(x [s] ['text'])-parsefloat(y [s] ['text'])//
})
reve = 1
}
// Rowed HTMLコンテンツをフォームに配置します
for(r = 0; r <right_len; r ++){
for(c = 0; c <cel_len; c ++){
table.rows [r] .cells [c] .innerhtml = arrs [r] [c] ['html']]
}
}
}
//テーブルソートの終了