テーブルソートに関しては、最初に話す必要があるのは、アレイの並べ替えがテーブルソートの基礎であるためです。
JavaScriptは、テーブルソートの配列にsort()メソッドを提供します。デフォルトでは、この方法では、ASCIIコードの順に配列の配列を配置します。 JavaScriptは、配列の配列逆()メソッドも提供します。
例を見てください:
コードコピーは次のとおりです。
関数SORTARRAY(){
var arraytest = ["z"、5,2、 "a"、32,3];
arraytest.sort();
alert(arraytest.toString()); //出力:2,3,32,5、A、Z
arraytest.reverse();
alert(arraytest.toString()); //出力:Z、A、5,32,3,2
}
SORTARRAY();
ハハ、5は32よりも大きく、これが私たちが望む結果ではないことは明らかです。 sort()メソッドはASCIIコードの順序でソートされていると言ったばかりです。
実際、sort()メソッドでは、関数型パラメーターを使用することもできます。これを比較関数と呼びます。比較関数が2つのパラメーターを受信できる場合、次の関数は値の意味を返します。
コードコピーは次のとおりです。
-1:最初のパラメーターは2番目のパラメーターよりも小さい
0:最初のパラメーターは2番目のパラメーターに等しくなります
1:最初のパラメーターは2番目のパラメーターよりも大きい
コードコピーは次のとおりです。
/**
*比較関数
* @param {object} param1 param 1を比較します
* @param {object} param2 param 2を比較します
* @return {number} param1> param2が返される場合1
* param1 == param2が0を返します
* PARAM1 <PARAM2が-1を返す場合
*/
function comparefunc(param1、param2){
//両方のパラメーターが文字列型の場合
if(typeof param1 == "string" && typeof param2 == "string"){
param1.localecompare(param2)を返します。
}
//パラメーター1が数字の場合、パラメーター2は文字列です
if(typeof param1 == "number" && typeof param2 == "string"){
return -1;
}
//パラメーター1が文字列の場合、パラメーター2は数字です
if(typeof param1 == "string" && typeof param2 == "number"){
返品1;
}
//両方のパラメーターが数字の場合
if(typeof param1 == "number" && typeof param2 == "number"){
if(param1> param2)return 1;
if(param1 == param2)return 0;
if(param1 <param2)return -1;
}
}
arraytest.sort(comparefunc)を実行すると、正しい結果が得られます。
この時点で、文字列()メソッドの使用法を説明する必要があります。これは、文字列をソートする方法であり、1つのパラメーターのみ、つまり比較する文字列を使用します。
特定の説明は次のとおりです。
1.文字列オブジェクトがパラメーター内の文字列の前にアルファベット順に配置されている場合、負の数値を返します
2。文字列オブジェクトがパラメーター内の文字列の後に文字順に配置されている場合、正の数値を返します
3.文字列オブジェクトがパラメーター内の文字列に等しい場合、0を返します。
さらに、LocalEcompare()メソッドには別のユニークな機能があります。このユニークな機能は、メソッドのシグネチャロケール(オンサイト、ローカル)に反映できます。つまり、その実装は地域の特性に基づいています。英語システムでは、その実装が文字列の昇順であり、中国語の場合、その実装は最初の文字のピニインに基づいています。
ハハ、これは、プログラムに漢字を巻き込んだとしても、並べ替えが間違っていないことを意味します。
次のプログラムを参照してください。
コードコピーは次のとおりです。
var testarray = ["foot"、 "book"、 "ite"、 "home"];
document.write(testarray.sort(
関数CompareFunction(param1、param2){
param1.localecompare(param2)を返します。 //出力:一、家、本、足
}
));