JSではsortを使ってlocaleCompareと中国語で並べ替えた例を実現します.

3203 ワード

表の並べ替えといえば、まず言うべきは配列の並べ替えです.配列の並び替えは表の並べ替えの基礎です.
JavaScriptは配列にsort()の方法を提供して表の順序付けに用いて、デフォルトの場合、この方法はArayの配列をASCIIコードの順序に従って配列させて、JavaScriptはまた配列の順序を逆転する方法reverse()を提供しています.
例を見てください
 
  
 function 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());    //output:z,a,5,32,3,2
         }
         sortArray();
ほほほ、5は32よりもっと大きくて、明らかにこれは私達の欲しい結果ではありません.さっきすでにsort()の方法はASCIIコードの順序によって並べられたと言いました.
実は、sort()方法はまた、関数タイプのパラメータを持つことができます.比較関数と呼ぶことができます.この比較関数はまた、2つのパラメータを受け取ることができます.以下の関数は値を返す意味があります.
 
  
-1:
0:
1:
 
  
/**
  *
  * @param {Object} param1 1
           * @param {Object} param2 2
           * @return {Number} param1 > param2 1
           *                     param1 == param2 0
           *                     param1 < param2 -1
           */
          function compareFunc(param1,param2){
             //
             if(typeof param1 == "string" && typeof param2 == "string"){
                 return param1.localeCompare(param2);
             }
             // 1 , 2
             if(typeof param1 == "number" && typeof param2 == "string"){
                 return -1;
             }
             // 1 , 2
             if(typeof param1 == "string" && typeof param2 == "number"){
                 return 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を実行すると、正しい結果を得ました.ここでは、文字列を並べ替える方法であり、一つのパラメータだけが比較される文字列の使い方を説明しなければなりません.
具体的な説明は以下の通りです
1、Stringオブジェクトがアルファベット順にパラメータの文字列の前に並べば、負の値2を返します.Stringオブジェクトが文字順にパラメータの文字列に並べば、正数3を返します.Stringオブジェクトがパラメータの文字列に等しい場合、0を返します.
この他にも、local Compare()の方法は独特なところがあります.この独特なところはその方法でlocale(現場、現地)にサインして表現できます.つまり彼の実現は地域の特性によって行われます.英語システムでは文字列の昇順で実現されるかもしれません.中国語では、彼の実現はアルファベットのピンインに従っています.
へへへ、これはつまり私達がプログラムの中で漢字に関連しますとしても、私達の順序は間違いに帰りません.以下の手順を参照してください.
 
  
var testArray = [" "," "," "," "];
         document.write(testArray.sort(
             function compareFunction(param1,param2){
                 return param1.localeCompare(param2);  //output: , , ,
             }
         ));