ホームページ  >  記事  >  ウェブフロントエンド  >  sort と localeCompare を組み合わせて使用​​し、JS_javascript スキルで中国語のソート例を実装する

sort と localeCompare を組み合わせて使用​​し、JS_javascript スキルで中国語のソート例を実装する

WBOY
WBOYオリジナル
2016-05-16 16:41:151483ブラウズ

テーブルのソートに関しては、まず配列のソートについて説明する必要があります。配列のソートはテーブルのソートの基礎であるためです。

JavaScript は、テーブルの並べ替え用に配列の sort() メソッドを提供します。デフォルトでは、このメソッドは Array 内の配列を ASCII コードの順序で配置します。また、JavaScript は配列の reverse() メソッドも提供します。

例を見てみましょう:

コードをコピー コードは次のとおりです:

関数 sortArray(){
var arrayTest = ["z",5,2,"a",32,3];
arrayTest.sort();
alert(arrayTest.toString()); //output: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 比較するパラメータ 1
* @param {Object} param2 比較するパラメータ 2
* @return {Number} param1 > param2 の場合は 1
を返します。 PARAM1 == param2を返す場合0
に                            */
関数compareFunc(param1,param2){
//両方のパラメータが文字列型の場合
If(typeof param1 == "文字列" && typeof param2 == "string"){
return param1.localeCompare(param2);
}
//パラメータ 1 が数値の場合、パラメータ 2 は文字列です
If(typeof param1 == "数値" && typeof param2 == "文字列"){
return -1;
}
//パラメータ 1 が文字列でパラメータ 2 が数値の場合
If(typeof param1 == "文字列" && typeof param2 == "数値"){
1 を返します;
}
//両方のパラメータが数値の場合
If(typeof param1 == "数値" && typeof param2 == "数値"){
If(param1 > param2) 1 を返す;
If(param1 == param2) 0 を返す;
If(param1 < param2) return -1;
}
}

arrayTest.sort(compareFunc) を実行すると、正しい結果が得られます。

この時点で、 localeCompare() メソッドの使用法を説明する必要があります。このメソッドは、比較する文字列という 1 つのパラメーターだけを持ちます。

具体的な手順は次のとおりです:

1. String オブジェクトがパラメーター内の文字列の前にアルファベット順に配置されている場合、負の数が返されます

2. String オブジェクトがパラメータの文字列の後に文字順に配置されている場合は、正の数を返します
3. String オブジェクトがパラメータの文字列と等しい場合、0
を返します。

さらに、 localeCompare() メソッドには、そのメソッド シグネチャ ロケール (local、local) に反映できる別のユニークな機能があります。これは、英語システムの場合、その実装が地域の特性に基づいていることを意味します。 、その実装は文字列の昇順であり、中国語の場合、その実装は最初の文字のピンインに従っている可能性があります。

ははは、プログラムに漢字を含めても、並べ替えは失敗しないということですね。

以下の手順を参照してください:

コードをコピー コードは次のとおりです:

var testArray = ["foot","本","之","家"];
document.write(testArray.sort(
function CompareFunction(param1,param2){
Return Param1.localecompare (Param2); // 出力:、ホーム、ブック、フィート
}
));
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。