>웹 프론트엔드 >JS 튜토리얼 >JS_javascript 기술에서 중국어 정렬 예제를 구현하기 위해 localeCompare와 결합된 정렬 사용

JS_javascript 기술에서 중국어 정렬 예제를 구현하기 위해 localeCompare와 결합된 정렬 사용

WBOY
WBOY원래의
2016-05-16 16:41:151520검색

테이블 정렬에 관해 이야기할 때 가장 먼저 이야기해야 할 것은 배열 정렬입니다. 배열 정렬은 테이블 정렬의 기본이기 때문입니다.

JavaScript는 테이블 정렬을 위해 배열에 대한 sort() 메서드를 제공합니다. 기본적으로 이 메서드는 Array의 배열을 ASCII 코드 순서로 정렬합니다. JavaScript는 배열에 대한 reverse() 메서드도 제공합니다.

예 보기:

코드 복사 코드는 다음과 같습니다.

함수 sortArray(){
          var arrayTest = ["z",5,2,"a",32,3];
                arrayTest.sort();
                  Alert(arrayTest.toString());          //출력:2,3,32,5,a,z
                arrayTest.reverse();
경고(arrayTest.toString()); //출력:z,a,5,32,3,2
         }
         sortArray();


하하, 5는 32보다 큽니다. 분명히 이것은 우리가 원하는 결과가 아닙니다. 방금 언급했듯이 sort() 메서드는 ASCII 코드 순서에 따라 정렬합니다.

실제로 sort() 메서드는 비교 함수를 호출할 수 있는 함수 유형 매개 변수도 허용합니다. 비교 함수가 두 개의 매개 변수를 받을 수 있는 경우 함수 반환 값의 의미는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

-1: 첫 번째 매개변수가 두 번째 매개변수보다 작습니다
0: 첫 번째 매개변수가 두 번째 매개변수와 동일
1: 첫 번째 매개변수가 두 번째 매개변수보다 큽니다.

코드 복사 코드는 다음과 같습니다.

/**
* 비교기능
* @param {Object} param1 비교할 매개변수 1
* @param {Object} param2 비교할 매개변수 2
* @return {Number} param1 > param2 return 1
~ | 🎜> 에게                            */
           함수 CompareFunc(param1,param2){
//두 매개변수가 모두 문자열 유형인 경우
If(typeof param1 == "string" && typeof param2 == "string"){
                        return param1.localeCompare(param2);
            }
​​​​​​​ //매개변수 1이 숫자이면 매개변수 2는 문자열
If(param1 유형 == "숫자" && param2 유형 == "문자열"){
                     -1을 반환합니다.
            }
​​​​​​​ //매개변수 1이 문자열이고 매개변수 2가 숫자인 경우
If(typeof param1 == "string" && typeof param2 == "number"){
1을 반환;
            }
​​​​​​​ //두 매개변수가 모두 숫자인 경우
If(param1 유형 == "숫자" && param2 유형 == "숫자"){
If(param1 > param2) 1을 반환;
If(param1 == param2) return 0;
If(param1 < param2) return -1;
            }
         }


arrayTest.sort(compareFunc)를 실행하면 올바른 결과를 얻습니다. 여기서는 localeCompare() 메소드의 사용법을 설명해야 합니다. 이 메소드는 문자열을 정렬하는 메소드로 비교 대상 문자열이 하나만 있습니다.


구체적인 지침은 다음과 같습니다.

1. String 객체가 매개변수의 문자열 앞에 알파벳순으로 정렬되면 음수가 반환됩니다.

2. String 객체가 매개변수의 문자열 뒤에 문자순으로 배열되어 있으면 양수를 반환합니다.

3. String 개체가 매개변수의 문자열과 동일한 경우 0
을 반환합니다.
또한 localeCompare() 메소드에는 메소드 서명 로케일(local, local)에 반영될 수 있는 또 다른 고유한 기능이 있습니다. 이는 해당 구현이 영어 시스템인 경우 지역적 특성을 기반으로 함을 의미합니다. , 구현은 문자열의 오름차순으로 이루어질 수 있으며, 중국어의 경우 첫 글자의 병음에 따라 구현될 수 있습니다.

하하, 이는 프로그램에 한자를 포함하더라도 정렬이 잘못되지 않는다는 의미입니다.

다음 절차를 참고하세요.



코드 복사 코드는 다음과 같습니다.

var testArray = ["foot","本","지","가족"];
           document.write(testArray.sort(
              함수 CompareFunction(param1,param2){
Return Param1.localecompare (Param2); // 출력:, 집, 책, 피트
            }
));
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.