> 웹 프론트엔드 > JS 튜토리얼 > 자바스크립트에서 sort() 메소드를 사용하는 방법

자바스크립트에서 sort() 메소드를 사용하는 방법

青灯夜游
풀어 주다: 2023-01-07 11:41:26
원래의
19220명이 탐색했습니다.

JavaScript에서는 배열 정렬에 sort() 메서드가 사용됩니다. 이 메서드는 특정 조건에 따라 배열 요소를 정렬할 수 있습니다. 구문 형식은 "arrayObject.sort(sortby)"입니다. 인수를 전달하지 않고 sort() 메서드를 호출하면 배열의 요소가 알파벳순으로 정렬됩니다.

자바스크립트에서 sort() 메소드를 사용하는 방법

이 튜토리얼의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.

sort()를 사용하여 배열을 정렬하세요.

sort() 메서드는 특정 조건에 따라 배열 요소를 정렬할 수 있습니다. 인수를 전달하지 않고 sort() 메서드를 호출하면 배열의 요소가 알파벳순으로 정렬됩니다.

var a = ["a","e","d","b","c"];  //定义数组
a.sort();  //按字母顺序对元素进行排序
console.log(a);  //返回数组[a,b,c,d,e]
로그인 후 복사

sort() 메서드를 사용할 때 다음 사항에 주의해야 합니다.

1) 소위 알파벳 순서는 실제로 문자 인코딩 테이블의 문자 순서에 따라 배열됩니다. 각 문자는 문자 테이블에서 고유한 번호를 갖습니다.

2) 요소가 문자열이 아닌 경우 sort() 메서드는 비교를 위해 배열 요소를 문자열로 변환하려고 시도합니다.

3) sort() 메서드는 문자열 수를 기준으로 정렬하는 대신 요소 값을 기준으로 비트별 비교를 수행합니다.

var a = ["aba","baa","aab"];  定义数组
a.sort();  //按字母顺序对元素进行排序
console.log(a);  //返回数组[aab,aba,baa]
로그인 후 복사

정렬할 때 먼저 각 요소의 첫 번째 문자를 비교하세요. 첫 번째 문자가 동일하면 두 번째 문자를 비교하는 식입니다.

4) 어쨌든 배열의 정의되지 않은 요소는 마지막에 정렬됩니다.

5) sort() 메서드는 원래 배열을 기준으로 정렬 작업을 수행하며 새 배열을 생성하지 않습니다.

sort() 메서드는 알파벳순으로 정렬할 뿐만 아니라 다른 순서에 따라 작업을 수행할 수도 있습니다. 이 경우 메소드에는 두 값을 비교하고 두 값의 상대적 순서를 설명하는 숫자를 반환하는 함수 매개변수가 제공되어야 합니다. 정렬 함수에는 a와 b라는 두 개의 매개변수가 있어야 하며, 반환값은 다음과 같습니다.

  • 맞춤 기준에 따라 a가 b보다 작은 경우 정렬된 배열에서 a가 b 앞에 나타나야 하며 0보다 작은 값이 반환됩니다.

  • a가 b와 같으면 0을 반환합니다.

  • a가 b보다 크면 0보다 큰 값을 반환합니다.

예제 1

다음 예에서는 정렬 기능에 따라 배열의 각 요소의 크기를 비교하여 작은 것부터 큰 것 순으로 정렬을 수행합니다.

function f(a,b) {  //排序函数
    return (a - b);  //返回比较参数
}
var a = [3,1,2,4,5,7,6,8,0,9];  //定义数组
a.sort(f);  //根据数字大小由小到大进行排序
console.log(a);  //返回数组[0,1,2,3,4,5,6,4,7,8,9]
로그인 후 복사

큰 것부터 작은 것 순으로 실행된다면 반환 값을 무효화하면 됩니다. 코드는 다음과 같습니다.

function f(a,b) {  //排序函数
    return -(a - b);  //取反并返回比较参数
}
var a = [3,1,2,4,5,7,6,8,0,9];  //定义数组
a.sort(f);  //根据数字大小由小到大进行排序
console.log(a);  //返回数组[9,8,7,6,5,4,3,2,1,0]
로그인 후 복사

예제 2

홀수 및 짝수 속성을 기준으로 배열을 정렬합니다.

sort()는 주로 함수 정렬 및 비교에 더 유연하게 사용할 수 있습니다. 예를 들어 홀수와 짝수에 따라 배열을 정렬하는 경우 시퀀스 함수의 두 매개변수가 홀수와 짝수인지 확인하고 정렬 순서만 결정하면 됩니다. 정렬 함수를 호출할 때

function f(a, b) {  //排序函数
    var a = a % 2;  //获取参数a的奇偶性
    var b = b % 2;  //获取参数b的奇偶性
    if (a == 0) return 1;  //如果参数a为偶数,则排在左边
    if (b == 0) return -1;  //如果参数b为偶数,则排在右边
}
var a = [3,1,2,4,5,7,6,8,0,9];  //定义数组
a.sort(f);  //根据数字大小由大到小进行排序
console.log(a);  //返回数组[3,1,5,7,9,0,8,6,4,2]
로그인 후 복사

sort() 메서드는 각 요소 값을 정렬 함수에 전달합니다. 요소 값이 짝수이면 해당 위치는 변경되지 않고 유지됩니다. 매개변수 a와 b의 순서가 바뀌므로 배열의 모든 요소에 대해 홀수-짝수 정렬이 수행됩니다. 짝수가 먼저 오고 홀수가 마지막에 오도록 하려면 반환 값만 가져오면 됩니다. 정렬 기능은 다음과 같습니다.

function f(a, b) {
    var a = a % 2;
    var b = b % 2;
    if (a == 0) return -1;
    if (b == 0) return 1;
}
로그인 후 복사

예제 3

문자열을 대소문자를 구분하지 않고 정렬합니다.

문자 인코딩 테이블의 각 대문자와 소문자의 순서가 다르고 대문자가 소문자보다 크기 때문에 일반적인 상황에서 문자열 정렬은 대/소문자를 구분합니다.

var a = ["aB", "Ab", "Ba", "bA"];  //定义数组
a.sort();  //默认方法排序
console.log(a);  //返回数组["Ab", "Ba", "aB", "bA"]
로그인 후 복사

대문자는 항상 왼쪽에 정렬됩니다. 소문자를 항상 왼쪽에 정렬하려면 다음과 같이 디자인하면 됩니다.

function f(a ,b) {
    return (a < b);
}
var a = ["aB", "Ab", "Ba", "bA"];  //定义数组
a.sort();  //默认方法排序
console.log(a);  //返回数组["Ab", "Ba", "aB", "bA"]
로그인 후 복사

문자 크기를 비교할 때 JavaScript는 문자 인코딩 크기를 기준으로 결정합니다. , 거짓이면 1을 반환하고, 거짓이면 -1을 반환합니다.

대/소문자를 구분하지 않고 대문자와 소문자를 같은 순서로 배열하는 경우 다음과 같이 디자인할 수 있습니다.

function f(a, b) {
    var a = a.toLowerCase;
    var b = b.toLowerCase; 
    if (a < b) {
        return 1;
    }
    else {
        return -1;
    }
}
var a = ["aB", "Ab", "Ba", "bA"];  //定义数组
a.sort();  //默认方法排序
console.log(a);  //返回数组["aB", "Ab", "Ba", "bA"]
로그인 후 복사

정렬 순서를 조정하려면 반환 값을 다음과 같이 설정하면 됩니다. 거꾸로.

예제 4

부동소수점 숫자와 정수를 별도로 표시합니다.

function f(a, b) {  //排序函数
    if (a > Math.floor(a)) return 1;  //如果a是浮点数,则调换位置
    if (b > Math.floor(b)) return -1;  //如果b是浮点数,则调换位置
}
var a = [3.5555, 1.23456, 3, 2.11111, 5, 7, 3];  //定义数组
a.sort(f);  //进行筛选
console.log(a);  //返回数组[3,5,7,3,2.11111,1.23456,3.55555]
로그인 후 복사

정렬 순서를 조정하려면 반환 값을 반전되도록 설정하면 됩니다.

【관련 권장 사항: javascript 학습 튜토리얼

위 내용은 자바스크립트에서 sort() 메소드를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿